Может кому пригодится...
В поисках подходящего слайд шоу для одного из своих проектов наткнулся вот на такую вещицу http://www.serie3.info/s3slider/index.php. Этот s3Slider jQuery plugin требует подключения библиотеки jQuery. Однако описанным на сайте способом подключение, вызывает конфликты в работе с собственной библиотекой друпал.
Решение нашлось на сайте drupal.org http://drupal.org/node/304255.
Нужно в файл template.php вашей темы добавить:
<?php
drupal_add_js(drupal_get_path('theme', 'mytheme') .'/my_js_file.js', 'theme');
?>
Комментарии
Да, чем дальше, тем выше уровень.
блин, а что, в друпал jQuery уже не встроена?
встроена, но s3slider почему то не хотел просто так с ней работать...
А в .info файл добавить scripts[] = my_script.js?
Учиться ,учиться и еще раз учиться ?
Согласен! Я не специалист. Была проблема, вот такое решение я нашел.
Если то что я разместил глупо, давайте я удалю пост?
а так он захотел?
в html то что изменилось?
Так заработал.
По второму вопросу я не понял что имеется ввиду?
В page.php вставил:
<link type="text/css" rel="stylesheet" media="all" href="/sites/default/files/s3slider/s3slider.css" />
<script type="text/javascript" src="/sites/default/files/s3slider/s3slider.js"></script>
<!-- /s3slider -->
Создал блок для слайд шоу и там прописал собственно HTML с картинками.
Перед ним, там же в блоке, вот это:
$(document).ready(function() {
$('#slider').s3Slider({
timeOut: 5000
});
});
//--></script>
Значит s3slider требует более новую версию jquery -
надо только установить модуль jQuery Update
Возможно Вам нужен jquery_update
Сейчас все отлично работает.
Господа я не претендую на "самого светлого" здесь.
Почти сутки бился над этим слайд шоу. И конечно же пробовал с jquery_update. Но на шестерки пропадали открывающиеся меню на странице редактирования ноды и блока.
Методом научного тыка, удалось выяснить, что проблема в jquery, которую я пытался подключить, так как друпаловская не работала с s3Slider.
я вам скажу умный вещь, только не обижайтесь
1 у jquery есть несколько версий
2 плагины требуют разных версий не просто так
3 обратная совместимость ломается, это тоже не просто так, на сайте jquery про это пишут
через это надо неплохо понимать, что именно происходит и почему
в данный момент мои проекты используют 1.5.2 версию безо всяких jquery_update
но для этого мне пришлось патчить ядро
Я понимаю, что версии есть разные http://docs.jquery.com/Downloading_jQuery#Current_Release
И на drupal.org есть хорошая статья о совместимости и прочем http://drupal.org/node/121997
На этом сайте обитает большое количество чайников как и я. Порой более грамотные коллеги не могут доходчиво объяснить что и почему. Вот так пытаюсь шаг за шагом что то понять.
Я уже писал если вы мне скажите прямым текстом: "ты тут парень чушь пишешь", удалю я свою писанину, что бы не вводить в заблуждение общественность:)
Ну а если хоть толика смысла есть, то может кто то сочтет это пригодным?
http://www.drupal.ru/node/52260
для использования версии 1.5 надо ещё заменять jquery.form на совместимый
версия 2.67 подойдёт
и не забыть, что модуль imce тоже использует jquery.form
Да "пельмешки" надо "лепить" по рецепту,а то могут манты получится
К слову.
foax, нельзя ли делать проще, подключая через INFO-файл шаблона:
; -----------------------------------------------------------------------------
scripts[] = scripts/jquery-1.4.1.min.js
scripts[] = scripts/...
Посвечусь
у меня тоже используется jquery из последних версий и jquery-ui на момент прикручивания последний, и как это сделать я написал здесь
Подружить последний jquery ui и drupal , без конфликтов с уже имеющимся в друпале jquery, работает и в админке и для анонимусов без патчей ядра если так можно выразится.
jquery_update при этом стоит, но для модулей которые не требует распоследних модулей jquery или jquery-ui
а json запросы работают? у меня получилось, что нет
это не хилый кусок функционала
Всё таки самое на мой взгляд оптимальное, но не совсем правильное, это патч ядра + хак jQuery update на предмет выноса jQuery в отдельно подключаемый скрипт, который лучше всего брать со внешнего CDN.
Если кому интересно - накропаю ман.
без него никак, на самом деле
раз уж ядро попатчили, то ещё пару файлов поменять тоже не проблема, они в одной поставке идут
внешний cdn - это конечно круто, но как единое универсальное решение он не годится, не надо оптимизировать заранее
ведь существует ненулевая, хоть мизерная вероятность того, что сайт будет болтаться в изолированной части сети
да и при разработке зависеть от могущего упасть инета не особо здорово
но это мелочи, а патч ядра для работы json ajax запросов - вот что на самом деле важно
весь функционал админки по управлению вьюсами к примеру или например корзина уберкарт как работала в моем случае так и продолжала работать, но при этом я юзаю новый jquery и ui
Парни вот почему вы ядро патчите, а я нет и у меня все работает без патча ядра!
Идея проста как репа
!!!!!!!!!!!!!!!!!!!!!!
на сайте остается как старый друпал со старым ui для тех кто в друпале его юзает и параллельно им на странице существует экземляр нового jquery, и jquery-ui, которые используются скриптами которым они нужны.
и работает.
у меня даже есть куски когда обработчик от нового jquery внутри дергает функции в контексте старой версии jquery.
ведь jquery это просто js Object присвоенный глобальной переменной jQuery на странице, в который натолкали функций, а для удобства создали глобальную переменную $ на странице в объекте window, который тупо ссылается на jQuery.
кто же вам мешает загрузить более новую версию jQuery в другую глобальную переменную, например
в jQuery14
и потом просто использовать ее
jQuery14.ready(function()
{
//пример вызова функции в контексте старой версии jquery, см. ниже
jQuery('body').css('background-color', 'red').append('версия'+jQuery('jquery').jquery);
//А это та же функция, но вызванная у новой версии jquery
jQuery14('body').css('background-color', 'red').append('версия'+jQuery14('jquery').jquery);
});
а весь старый код в друпале будет работать как и работал
прочитайте и не мучайтесь с патчами друпала!
все итак работает.
Окей. смысл в том, что можно и не вытягивать на CDN, а вот выбрать нужную версию и подключить локально -- без проблем(для тестирования удобно очень). Сделал так потому, что компиляты быстрее собираются, и всё таки когда тянется с CDN выходит быстрее. Тут паралельная загрузка плюсом.
Это удобно на самом деле, если ещё и скрипты в подвал сдропнуть. Но некоторые модули генерируют инлайны с аргементами $ и конечно jQuery болтающийся в подвале работать не будет. Поэтому на CDN его и руками в шаблон или через тему. на данный момент этот способ мне кажется самым эффективным.
Кстати cdn у меня на тестовой версии сайта дома включено и отлично все работает, хотя весь сайт по прежнему находится в одной папке, но js грузятся с одного домена а картинки с другого, при этом apache сервер основной как был один так и остался, даже виртуальных сайтов не делал, для этих доменов. И для этого тоже есть стандартные модули, мучать ничего уже не надо.
Да это говно вариант. Захрена 2 jQuery таскать? У вас ни один AJAX и batch не сработает.
Вы бы для начала разобрались как они работают и почему их использовать не стоит, а потом бы писали.
всю достройку DOM, если она есть, надо туда выносить в обязательном порядке
и не цеплять её на документ риди
так шанс, что достройка закончится до того, как стартанёт рендеринг, возрастёт многократно
проверено лично
а не говно вариант убить год или два пока все ошибки вычистите от замены одной версии jquery на другую, а за это время в 8-м друпале они просто тупо включат jquery-1.4 а к тому времени выпустя уже какой нить jquery-2.0 и вы так и будете носится с патчами и так далее, и решать чужие задачи, когда вам надо решать другие свои.
ajax весь у меня работает, с чего ему не работать то? у меня корзина уберкарт в кэшировании работает, views работает, админка у него через ajax сделана.
А чего там разбираться с CDN, ускорить парралельную загрузку файлов из-за ограничения одновременно числа загружаемых файлов броузером с одного домена. Оно либо работает либо нет, на продакшене не проверял, но вот уже месяца два локально стоит просто побаловаться глюков не заметил, а вот скорость загрузки на странице действительно выросла, и если в файрбаге раньше загрузка тучи файлов было на графике в правой части, то сейчас ближе к середине, что уже лучше.
В абсолютных единицах время тоже уменьшилось, не намного но уменьшилось.
у большинства проектов нет такой дикой нагрузки из-за которой картинки просто на другой сервер выгружают, а вот ускорить загрузку страницы милое дело за счет этого.
а в семёрке щас какой?
да, конечно, всё работает
плевать, что на сайте jquery написано об изменениях в json
Хм .. на самом деле не думаю, что особо актуально. Вообще тогда стоит и про defer(не выполнять пока не закончится парсинг и обработка) вспомнить. Достройка DOM на Document Ready довольно удобна, если присмотреться. Я через неё вывожу кнопки +1 и яндексовские закладки. Они всё равно без скриптов не работают. даже скрипты закладок подключаю динамически по рэди.
Логика: грузим документ, рендерим, под рэди достраиваем + подгружаем всё левое. Работает отлично. Но тут наверное всё индивидуально и нужно по месту смотреть
Чем вам json так не угодил? Получайте его все также через старый jquery, парсите, а потом передайте полученные данные в новый код который юзает новый jquery, нет в этом проблем. json в старом формате надо получать все также ajax запросом от старой версии jquery.
Новая версия jquery просто дополняет старую, а сейчас кашу сделали из-за этого jquery-update. Когда часть друпала типа умеет новый jquery юзать и требует jquery-update dev версии, который на jquery-1.4 также глючит местами и конфликтует с старым кодом, а есть немалая часть друпала и модулей к нему которые ошибки выдают так как не переписаны и возможно не будeт переписаны никогда под новую версию jquery.
Друпал как юзал старые версии jquery так и юзает, а новые версии пускай используются в новом коде js для нового кода php, который вернет тот формат json который нужен.
Я на 7-ку еще не скоро перейду.
К тому же, часты ситуации, когда сайт вообще на каком нить 5-м друпале может крутится, а шашечки хотят прикрутить, которые требуют новый jquery и ui.
Кстати именно из-за визуальных шашечек весь сыр бор, а модные вещи defer удобны, но только slickgrid к примеру с новым модным jquery глючит при попытке мышью расширить столбец колонки.
И что мне в этом случае делать, да пожалуйста используйте хоть три версии jquery. И снова без каких либо патчей.
Думаю мы друг друга не поняли, у меня jquery-update cтоит, но чисто так, чтобы функции его некоторые были доступны в api, сам он при этом по прежнему там какую то 1.2.6. версию содержит или может 1.3.2, но последний ui с ними не работает. потому я сделал свой способ. при этом сам друпал как работал со старым jquery так и пашет, а всем кому надо новый должны загрузить свои скрипты как я описал в статье.
Да всё «проще» делается. Ставим jQuery update, лезем в модуль, выпилваем то, что отвечает за вывод библиотеки и подключаем её руками. 6ка вполне стабильная и один патч сделать вообще не проблема, даже руками накатить, там всё понятно.(открываем патч редактором, смотрим номера строк и окружающий код, далее делаем замену и всё).
Правда тогда уже рациональнее выломать вывод jQuery из ядра и выкинуть нафиг jQuery апдейт предварительно положив все его замещающие JS в /misc.
Вот такой хардкор
разница в том, что я вижу перерисовку или не вижу
когда достройка в ready я вижу её чаще, когда в подвале без ready - значительно реже
появления плюсодинов - это не из другой области
Может кто-нибудь поподробней инструкцию на русском напишет как запустить s3slider ато чтото ну ни как не получается