Привет друпаловеды, филы и любители.
Есть сайт, разработанный 2 года назад на Drupal 6. Есть желание клиента, реализовать финтеклюшечку, которая реализована в недавно полюбившемся мне Twitter Bootstrap под названием Popovers. Очень замечательная штучечка. Вот только все мы знаем, что разработчики (зачемто!) сделали нам проблему совместимости 6ки с новыми версиями JQuery. В частности, при подключении Bootstrap, вылетает ошибка на отсутствующий jq плагин .on()
Как жить в таких условиях?
Комментарии
1.
Прыгнуть с 10 этажадобавить в загрузку jquery 1.7 перед плгином2. Переписать вручную Плагин
3. Нaйти другой Плагин
4. Воспользоваться модулем jquery update
Этот тонкий юмор кухарки, установившей Drupal для сайта про хомячков, теперь она разработчик.
Ты сам пробовал? Попробуй - посмотри что получится
Ты оплатишь?
самый капитанский вариант из предложенных
читай описание модуля для 6ки.
Спасибо за снисхождение и богатый опыт, к сожалению он оказался бесполезным мне.
Писал у себя решение для Drupal 6 и jQuery 1.7
А вот Twitter Bootstrap на Drupal 6 (в процессе разработки)
Вот это настоящий мужской ответ! Спасибо, щас начну курить первую ссылку.
По второй: в разработке сайт или в разработке мутация Bootstrap?
На здоровье!
В разработке только дизайн, функционал готов.щас попробую заменить jq в модуле jq update на новую версию и заменить jq ui в модуле )
В общем, Stan подкинув мне ссылку на свич версий JQ, дал мне понимание, что не все так эпично-печально...
Я залез в папочки модулей jq update & jq ui
Подменил файлики скриптов на новые версии (кто будет повторять мои кулибинские опыты, забекапте на всякий, чтобы по 100 раз не качать скрипты потом).
Далее. Новый UI, называет файлы как 'jquery\..+?\.js' А наш замечательный модуль, не знает об этом. Следовательно нам нужно подтереть лишнюю приставку имен скриптов jq вот этой строчкой в консоли SSH:
ls -a | grep jquery\. | while read name; do mv $name ${name/jquery./}; done
Кстати, пока втыкал эту строку, обнаружил что в текстовом редакторе на форуме не работает кнопка вставки кода, почемуто...
Далее модуль почемуто перестал реплейсить старый говенно-переписанный jquery.js v1.2.x на новый, девственно чистый. Оказалось, что в модуле есть некая функция взятия версии, в которой я нашел гениальный шаблон регулярки:
$pattern = '# * jQuery JavaScript Library v([0-9\.a-z]+)#';
Естественно Джон Резиг просит прощения перед авторами, за то что говнокодит комменты, не удовлетворяющие шаблонам сего модуля под друпал. Ок. Мы его Fail подправим просто, вставив в точности вот что (в .js & .min.js):
' * jQuery JavaScript Library v1.7.2'
К слову для забавно-пытливых, сим шагом мы не нарушаем лицензию, что очевидно.
Все заработало и пока не ломается. Хз как дальше будет, пошел пробовать twitter.bootstrap...
Вот что сломалось:
когда пытаешься добавить CCK поле, после выбора типа, нужно выбрать подтип.
Например File -> Image
Дак вод второй select не активен
Есть соображения?
Порывшись в CCK, понял, что с моим новым JQ, не инициализируется почемуто var Drupal = Drupal || .....
В общем попробую методу Stan.Ezersky для страниц админки...
замечательно сработало!
Стан чтото много написал, я вот накалялак вот так:
/**
* Return the path to the jQuery file.
*/
function jquery_update_jquery_path() {
$jquery_file = array(
'none' => 'jquery.js',
'min' => 'jquery.min.js'
);
$curr_uri = request_uri();
if (preg_match('/admin/', $curr_uri, $matches))
return JQUERY_UPDATE_REPLACE_PATH .'/1.3.2/'. $jquery_file[variable_get('jquery_update_compression_type', 'min')];
return JQUERY_UPDATE_REPLACE_PATH .'/'. $jquery_file[variable_get('jquery_update_compression_type', 'min')];
}
Вроде пашет
P.S. Решение выше для D7, для D6 отключать 1.7 на время администрирования
Возможно это тоже поможет?
http://xermit.blogspot.com/2011/01/jquery-ui-drupal.html