Jhtml :: порядок скриптов - как отложить до загрузки jQuery?

Я использую JHtml :: script, чтобы добавить скрипты на мои страницы в специально разработанном модуле. Однако эти сценарии вводятся в голову до добавления J3 в jQuery - например:

<! - мой модуль js ->
<script src = "/modules /mod_tiles /js /jquery.isotope.min.js" type = "text /javascript"> </script>
<script src = "/modules /mod_tiles /js /jquery.hoverintent.min.js" type = "text /javascript"> </script>
<script src = "/modules /mod_tiles /js /mod_tiles.js" type = "text /javascript"> </script>
<! - тогда joomla загружает jQuery --->
<script src = "/media /jui /js /jquery-noconflict.js" type = "text /javascript"> </script>
<script src = "/media /jui /js /jquery.min.js" type = "text /javascript"> </script>

Как я могу заставить Joomla загружать jQuery перед любыми другими скриптами?

10 голосов | спросил codinghands 9 J0000006Europe/Moscow 2014, 06:17:07

6 ответов


13

Вы должны позвонить

JHTML :: _ ( 'jquery.framework');

перед другим JHtml :: script. AFAIK это гарантирует, что сначала загружается jQuery.

ответил fruppel 9 J0000006Europe/Moscow 2014, 19:03:49
2

, если я правильно прочитаю ваш вопрос, вы разрабатываете свой собственный модуль.

Попробуйте это, в default.php - вид модуля (в «tmpl»):

JHtml :: stylesheet ('modules /'.$ module-> module.' /assets /css /yourfile.css ');

JHtml :: script ('modules /'.$ module-> module.' /assets /js /yourscript.js ');

Или это:

JHtml :: _ ('stylesheet', 'modules /'.$ module-> module.' /assets /css /anotherfile.css ');

JHtml :: _ ('script', 'modules /'.$ module-> module.' /assets /js /othercript.js ');

В обоих случаях ваш JS-файл (ы) должен быть введен после jQuery, при условии, что вы создали папку «asset», а также папку «css» и «js» внутри.

Второе решение больше соответствует API joomla 3.X.X.

Надеюсь, что это поможет.

ответил ghazal 9 J0000006Europe/Moscow 2014, 13:49:59
2

Я столкнулся с этой проблемой на прошлой неделе, и это было связано с тем, где я вызывал JHtml :: script. Вы делаете это в своем представлении или в шаблоне представления? Если вы попытаетесь добавить скрипты в самом представлении (views /yourview /view.html.php), они будут вставлены перед собственными скриптами Joomla !, но если вы добавите скрипты в шаблон (views /yourview /tmpl /default.php), они будут вставлены после скриптов Joomla !.

Удачи!

ответил Zachary Draper 9 J0000006Europe/Moscow 2014, 20:51:36
0

Вероятно, это связано с тем, что разработчик mod_tiles использовал для импорта скриптов. Я предполагаю, что они не придерживались стандартов кодирования Joomla в этой ситуации.

У вас есть 2 варианта (о которых я могу думать) hwre:

  1. Если скрипты импортируются из файла в папке tmpl внутри модуля, вы можете выполнить Template Override и измените способ импорта сценария, используя JHtml.
  2. Вы можете загрузить и установить jQuery Easy , который является плагином, который импортирует jQuery и помещает его выше всех других скриптов.

Надеюсь, что это поможет

ответил Lodder 9 J0000006Europe/Moscow 2014, 13:09:10
0

Я хотел добавить свои два бита после факта. У меня есть несколько сценариев и таблиц стилей, которые нужно загружать для каждого представления, которое у нас есть в компоненте, и хотели, чтобы одна точка имела это, застраховав также то, что они загружены в правильную последовательность.

В файле components \ myComponent \ mycomponent.php:

определен ('_ JEXEC') или умереть;

//Включить зависимости
jimport ( 'joomla.application.component.controller');

JHtml :: stylesheet ('http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css', array (), true);
JHTML :: таблицы стилей ( 'компоненты /com_mycomponent /активы /CSS /mycomponent.css');

JHTML :: _ ( 'jquery.framework'); //Убедитесь, что jQuery загружен перед компонентом JS
JHtml :: script ('components /mycomponent /assets /js /jquery.cookie.js');

//Выполните задачу.
$ controller = JControllerLegacy :: getInstance ('Mycomponent');
$ Контроллер- & Гт выполнить (JFactory :: getApplication () - > вход- & Гт получить ( 'задачи'));
$ Контроллер- > перенаправления ();
ответил GDP 14 SunEurope/Moscow2014-12-14T19:23:55+03:00Europe/Moscow12bEurope/MoscowSun, 14 Dec 2014 19:23:55 +0300 2014, 19:23:55
-1

Я знаю, что это старая тема, но вы когда-нибудь дошли до сути? Я только что испытал ту же проблему. Я определил причину, но не проблему /решение; У меня подлое подозрение, что это BUG, ​​но может сделать с кем-то еще попробовать его.

Сценарий: вы создали модуль, который включает сценарий, зависящий от jQuery, поэтому вы используете следующее в представлении default.php:

$ doc = JFactory :: getDocument ();
$ Doc- > addScript ( "медиа /mod_accordion /JS /accordion.js");

Затем вы устанавливаете модуль и присваиваете ему позицию модуля, давайте скажем 'left'. Когда вы смотрите на исходный исходный код, все выглядит хорошо, все скрипты загружаются после сценариев, включенных в

JHTML :: _ ( 'bootstrap.framework');

ОДНАКО если вы предоставите модулю позицию «аккордеон» и используйте функцию загрузки joomla, чтобы добавить модуль в статью

{loadposition accordion}

, то accordion.js добавляется до файлов bootstrap.framework.

Единственный способ, с помощью которого я смог применить его, - это добавить скрипт как встроенный скрипт, а не включать его в голову.

EDIT: то же самое касается включения css; он добавляется в начало списка объявления css (перед шаблоном и загрузочными файлами css). Для этого нужно добавить важное значение для объявлений css.

ответил philip 13 PM00000030000002531 2016, 15:50:25

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132