Импорт jQuery в Joomla
Я уже более года работает разработчиком Joomla. Я изо всех сил пытался импортировать jQuery в joomla каждый день. Joomla поставляется с mootools. Когда я импортирую jQuery, он сбой. Также, когда я создаю модули, мне приходится импортировать jQuery в каждый модуль, что делает сайт медленным. Иногда это приводит к сбою всего сайта. Я хочу, чтобы оба mootools и jquery работали рука об руку, поэтому я могу использовать оба без каких-либо сбоев.
Какой лучший способ импортировать jQuery в Joomla? Существует ли конкретное место, где нужно импортировать одну библиотеку jquery на весь сайт (как бэкэнд, так и интерфейс)?
благодаря
Ответы
Ответ 1
Это код, который мы используем для обеспечения импорта только 1 копии jQuery. Он просто проверяет, уже ли импортирован jQuery, а если нет, то мы импортируем его :)
Joomla 2.5
<?php
$app = JFactory::getApplication();
if (!$app->get('jquery'))
{
$app->set('jquery', true);
JFactory::getDocument()->addScript(JUri::root() . 'templates/template_name/js/jquery.js');
}
?>
Joomla 3.x (без конфликтного режима):
JHtml::_('jquery.framework');
Joomla 3.x (обычный режим):
JHtml::_('jquery.framework', false);
Вам нужно вставить этот код в index.php вашего шаблона, желательно около вершины, чтобы вы помнили, где он находится. Если вы не хотите переопределять файл index.php вашего шаблона, вы также можете разработать небольшой плагин
Обновить:
Как сказал Бобби. Многие расширения включают в себя собственную копию jQuery, и многие из них не используют этот метод и, следовательно, конфликтуют. Все, что я знаю, это то, что любой хороший разработчик должен знать, что несколько jQuery-библиотек вызывают конфликты и должны использовать этот код.
Ответ 2
Это отличный плагин.
http://extensions.joomla.org/extensions/core-enhancements/performance/jquery-scripts/18327
Этот плагин призван помочь очистить и разрешить проблемы переднего и заднего конца при использовании экземпляров jQuery вместе с библиотеками Mootools.
ЧТО ЭТО ОТНОСИТСЯ В КОРОБКЕ
- вызывает библиотеки jQuery jQuery и jQuery из CDN Google (с протоколом или без него), но вы также можете сделать это локально,
- размещает библиотеки jQuery после того, как MooTools требует идеальной совместимости,
- добавляет код noConflict() вместе с вызовом библиотеки jQuery,
- выделяет дополнительные библиотеки jQuery и jQuery UI, включая вызовы noConflict(), добавленные другими модулями или плагинами,
- позволяет вам выбрать базовый стиль jQuery UI или настраиваемую тему.
ЧТО ВЫ МОЖЕТЕ ДВУХ
- отключить библиотеки MooTools ориентировочно в интерфейсе,
- включить или отключить плагин в определенных частях сайта, от шаблона до отдельной страницы,
- использовать отчеты для получения отзывов о том, что сделал движок плагина,
- добавлять или удалять скрипты и таблицы стилей,
- полоски пустых строк, оставленные изменениями, внесенными на страницу,
- запретить удаление некоторых библиотек,
- изменить способ работы двигателя по умолчанию (не добавлять и не удалять код noConflict()...),
Ответ 3
Используйте Joomla! 3.0 - если вы потратили долгое время, вы должны помочь с Joomla! JavaScript Working Group, которая была создана для решения этой проблемы.
Ответ 4
В Joomla 3.x JApplication больше не распространяется на JObject, что означает, что если вы хотите использовать тот же код в своем расширении для Joomla 2.5 и Joomla 3.x, тогда вам нужно написать условие if
if (!version_compare(JVERSION, '3', 'ge') && !JFactory::getApplication()->get('jquery', false)) {
В противном случае это рухнет! Пример можно найти здесь: https://github.com/Digital-Peak/DPExtensions/blob/master/mod_dpslider/tmpl/default.php#L13