0 Пользователей и 1 Гость просматривают эту тему.
  • 40 Ответов
  • 23863 Просмотров
*

wertex

  • Новичок
  • 9
  • 6 / 0
Библиотека jquery подключенная в шаблоне грузится позже остальных скриптов подключенных в модулях, что приводит к конфликту и неработоспособности последних.

К примеру порядок загрузки скриптов в HEAD сейчас:
Код: javascript
<script src="/modules/mod_chat/js/ajax.js" type="text/javascript"></script>
<script src="/modules/mod_fantasy/js/script.js" type="text/javascript"></script>
<script src="/templates/roadstar/js/jquery-1.7.1.min.js" type="text/javascript"></script>
а нужно:
Код: javascript
<script src="/templates/the_eight/js/jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="/modules/mod_chat/js/ajax.js" type="text/javascript"></script>
<script src="/modules/mod_fantasy/js/script.js" type="text/javascript"></script>

Вопрос! Как заставить скрипты шаблона грузится раньше скриптов модулей?
*

Очередной вебмастер

  • Давно я тут
  • 768
  • 55 / 0
  • лысый умный дядя
Сайты на Joomla, разработка и поддержка
----------
Помог ответ - жми плюс!
*

wertex

  • Новичок
  • 9
  • 6 / 0
Re: Порядок загрузки скриптов
« Ответ #2 : 14.03.2014, 12:02:36 »
addStyleSheet - вызов стилей  ^-^, ну да ладно.

Попытаюсь сформулировать вопрос по другому.
В шаблоне подключаю библиотеку jquery основную для всего сайта, делаю это так:

Код: javascript
$this->addScript($this->baseurl.'/templates/'.$this->template.'/js/jquery-1.7.1.min.js');

В модуле подключаю скрипт, к примеру:

Код: javascript
$doc = & JFactory::getDocument();
$doc->addScript( JURI::root(true)."/modules/mod_fantasy/js/script.js" );

Библиотека jquery расположенная в шаблоне подключается позже скрипта прописанного в модуле, что приводит к неработоспособности скрипта модуля. То есть в шапке документа это выглядит так, как было указано в первом посте.
Подключать еще раз jquery внутри модуля, как-то нелогично.

Вопрос!
Как правильно прописать подключение jquery или каким методом вызвать, чтобы скрипт (скрипты) шаблона грузился раньше скрипта (скриптов) модулей?

Заранее спасибо!
*

fsv

  • Живу я здесь
  • 2765
  • 402 / 2
Re: Порядок загрузки скриптов
« Ответ #3 : 14.03.2014, 14:45:33 »
В шаблоне подключаю библиотеку jquery основную для всего сайта
Где? Предполагаю, что до DOCTYPE .
Подключите в <head> ДО <jdoc:include type="head" /> .
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

wertex

  • Новичок
  • 9
  • 6 / 0
Re: Порядок загрузки скриптов
« Ответ #4 : 15.03.2014, 03:00:28 »
Где? Предполагаю, что до DOCTYPE .
Подключите в <head> ДО <jdoc:include type="head" /> .

fsv спасибо Вам за ответ! Но в меня так и прописано внутри index.php

Код: php
<head>
<?php
$this->addScript($this->baseurl.'/templates/'.$this->template.'/js/jquery-1.7.1.min.js');
$this->addScript('/templates/'.$this->template.'/js/personal.js');
?>
<jdoc:include type="head" />   
</head>

Вот так выглядит при просмотре кода:
Код: html4strict
<head>
  <base href="http://opa.in.europa" />
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <meta name="keywords" content="ключевые слова" />
  <meta name="description" content="описание" />
  <meta name="generator" content="Joomla! - Open Source Content Management" />
  <title>Тестовая страница</title>
  <link href="/templates/roadstar/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon" />
  <link rel="stylesheet" href="/modules/mod_fantasy2/assets/style.css" type="text/css" />
  <link rel="stylesheet" href="/templates/roadstar/css/customs.css" type="text/css" />
  <link rel="stylesheet" href="/templates/roadstar/css/reset.css" type="text/css" />
  <link rel="stylesheet" href="/templates/roadstar/css/layout.css" type="text/css" />
  <link rel="stylesheet" href="/templates/roadstar/css/modules.css" type="text/css" />
  <script src="/media/system/js/mootools-core.js" type="text/javascript"></script>
  <script src="/media/system/js/core.js" type="text/javascript"></script>
  <script src="/media/system/js/caption.js" type="text/javascript"></script>
  <script src="/modules/mod_fantasy2/js/ajaxs.js" type="text/javascript"></script>
  <script src="/templates/roadstar/js/jquery-1.7.1.min.js" type="text/javascript"></script>
  ...

Но если прописать:

Код: php
<head>
<script type="text/javascript" src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template; ?>/js/jquery-1.7.1.min.js"></script>
<?php
$this->addScript('/templates/'.$this->template.'/js/personal.js');
?>
<jdoc:include type="head" /> 
</head>

библиотека замечательно подгружается первой, выше всех скриптов, meta описаний и title то есть в самое начало HEAD, что как бы не нормально, да и подгруздка методом addScript более правильнее.

В общем это выглядит так:

Код: html4strict
<head>
<script type="text/javascript" src="/templates/roadstar/js/jquery-1.7.1.min.js"></script>
  <base href="http://opa.in.europa" />
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <meta name="keywords" content="ключевые слова" />
  <meta name="description" content="описание" />
  <meta name="generator" content="Joomla! - Open Source Content Management" />
  <title>Тестовая страница</title>
  <link href="/templates/roadstar/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon" />
  <link rel="stylesheet" href="/modules/mod_fantasy2/assets/style.css" type="text/css" />
  <link rel="stylesheet" href="/templates/roadstar/css/customs.css" type="text/css" />
  <link rel="stylesheet" href="/templates/roadstar/css/reset.css" type="text/css" />
  <link rel="stylesheet" href="/templates/roadstar/css/layout.css" type="text/css" />
  <link rel="stylesheet" href="/templates/roadstar/css/modules.css" type="text/css" />
  <script src="/media/system/js/mootools-core.js" type="text/javascript"></script>
  <script src="/media/system/js/core.js" type="text/javascript"></script>
  <script src="/media/system/js/caption.js" type="text/javascript"></script>
  <script src="/modules/mod_fantasy2/js/ajaxs.js" type="text/javascript"></script>
  ...

В общем мозги начинают по понемногу закипать. Есть еще идеи?
*

newjus

  • Захожу иногда
  • 53
  • 1 / 0
Re: Порядок загрузки скриптов
« Ответ #5 : 30.05.2014, 00:48:38 »
wertex, решили как-то вопрос? Неужели ни у кого больше он не возник?
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Порядок загрузки скриптов
« Ответ #6 : 30.05.2014, 01:10:36 »
пропишите прямо в
<head><script src="/templates/roadstar/js/jquery-1.7.1.min.js" type="text/javascript"></script></head>
без использования api
*

newjus

  • Захожу иногда
  • 53
  • 1 / 0
Re: Порядок загрузки скриптов
« Ответ #7 : 30.05.2014, 22:41:13 »
А кто знает как именно ПОМЕНЯТЬ порядок загрузки? Где то "нечто", которое отвечает за это порядок? Неужели никто из столь большого количества пользователей не знает?!

Вот как его изменить, чтобы jquery-1.8.3.min.js грузился первым?

Код
<script src="/media/system/js/mootools-core.js" type="text/javascript"></script>
  <script src="/media/system/js/core.js" type="text/javascript"></script>
  <script src="/components/com_k2/js/k2.js?v2.6.7&amp;sitepath=/" type="text/javascript"></script>
  <script src="/media/system/js/caption.js" type="text/javascript"></script>
  <script src="/plugins/system/t3/base/js/jquery-1.8.3.min.js" type="text/javascript"></script>
  <script src="/plugins/system/t3/base/js/jquery.noconflict.js" type="text/javascript"></script>
  <script src="/plugins/system/t3/base/bootstrap/js/bootstrap.js" type="text/javascript"></script>
  <script src="/plugins/system/t3/base/js/script.js" type="text/javascript"></script>
  <script src="/plugins/system/t3/base/js/menu.js" type="text/javascript"></script>
  <script src="/plugins/system/t3/base/js/responsive.js" type="text/javascript"></script>
  <script src="/media/com_acymailing/js/acymailing_module.js?v=462" type="text/javascript"></script>
  <script src="http://joomla/modules/mod_bt_contentshowcase/assets/js/jcarousel.js" type="text/javascript"></script>
  <script src="http://joomla/modules/mod_bt_contentshowcase/assets/js/hammer.js" type="text/javascript"></script>
  <script src="http://joomla/templates/bt_shopping_t3v3_v1/html/mod_bt_contentshowcase/themes/responsive/js/default.js" type="text/javascript"></script>
  <script src="http://joomla/modules/mod_bt_productslider/assets/js/jcarousel.js" type="text/javascript"></script>
  <script src="http://joomla/templates/bt_shopping_t3v3_v1/html/mod_bt_productslider/themes/shopping/js/default.js" type="text/javascript"></script>
  <script src="http://joomla/modules/mod_bt_backgroundslideshow/tmpl/js/default.js" type="text/javascript"></script>
  <script src="http://joomla/modules/mod_bt_smartsearch/tmpl/js/chosen.jquery.min.js" type="text/javascript"></script>
  <script src="/media/com_finder/js/autocompleter.js" type="text/javascript"></script>
  <script src="http://joomla/modules/mod_bt_sociallogin/tmpl/js/jquery.jscrollpane.min.js" type="text/javascript"></script>
  <script src="http://joomla/modules/mod_bt_sociallogin/tmpl/js/jquery.simplemodal.js" type="text/javascript"></script>
  <script src="http://joomla/modules/mod_bt_sociallogin/tmpl/js/default.js" type="text/javascript"></script>
  <script src="/media/system/js/mootools-more.js" type="text/javascript"></script>
  <script src="/media/system/js/validate.js" type="text/javascript"></script>
  <script type="text/javascript">
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
Re: Порядок загрузки скриптов
« Ответ #8 : 31.05.2014, 00:58:45 »
Код
//получаем массив скриптов
$doc = JFactory::getDocument();
$scripts = $doc->_scripts;

//чего-то там  делаем
if (is_array($scripts) && !empty($scripts)) {
    $first_scripts = array();
foreach ($scripts as $key => $script) {
if (strpos($key, 'caption.js')!== false) {
    $first_scripts[$key] = $script;
unset($scripts[$key]);
}
}

if (!empty($first_scripts)) {
$scripts = $first_scripts + $scripts;
}
}
//устанавливаем обратно
$doc->_scripts = $scripts;
*

flyingspook

  • Живу я здесь
  • 3590
  • 247 / 9
Re: Порядок загрузки скриптов
« Ответ #9 : 31.05.2014, 11:56:09 »
Не будет правильно если скрипты из модулей в шаблон вставить и еще и с условиями на работу самого модуля, думаю ни чего не изменяется как было так, есть и будет, коробочка и дополнительные расширения для "...", а если сами делаете и вы не "...", то оптимизация и заключается выведением скриптов и стилей из расширений в шаблон, не за это ли все не понимают почему сделать сайт не так просто, а думают что поставил cms накидал на неё расширений всяких разных и "радуйся"
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Порядок загрузки скриптов
« Ответ #10 : 31.05.2014, 14:34:33 »
smokerman, вам не кажется что это офигеть какие костыли?

Метод addscript подключает скрипты в том порядке в каком ему вздумается(хотя я подозреваю что все дело в том что он сначало рендерит модули а потом из буфера выводит его в шаблон, поэтому скрипты из модуля попадают в head раньше). А метод addScriptDeclaration вобще добавляет кусок из мутулса в скрипт который добавляет в head( по крайней мере в версии 2,5), так что если в шаблоне отключен мутулс, начинаются глюки скриптов. Поэтому в некоторых случаях проще отказаться от этих методов пока их не допилят а подключать скрипты вручную.
интернет-блог: http://websiteprog.ru
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
Re: Порядок загрузки скриптов
« Ответ #11 : 31.05.2014, 15:32:46 »
smokerman, вам не кажется что это офигеть какие костыли?
Я ничего не думаю) был конкретный вопрос, я дал ответ

Метод addscript подключает скрипты в том порядке в каком ему вздумается(хотя я подозреваю что все дело в том что он сначало рендерит модули а потом из буфера выводит его в шаблон, поэтому скрипты из модуля попадают в head раньше). А метод addScriptDeclaration вобще добавляет кусок из мутулса в скрипт который добавляет в head( по крайней мере в версии 2,5), так что если в шаблоне отключен мутулс, начинаются глюки скриптов. Поэтому в некоторых случаях проще отказаться от этих методов пока их не допилят а подключать скрипты вручную.
Данный метод ничего не добавляет, добавляется только то, что ему передается.
По поводу скриптов от мутулз есть такое дело. Обсуждалось не раз как от них избавиться. Даже по моему был плагин на JED, которой позволяет отключить му на фронте.
Да и в общем все это дело лучше, конечно, делать через плагин (есть даже специальное событие onBeforeCompileHead), а не искать где и когда что подключается


*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Порядок загрузки скриптов
« Ответ #12 : 31.05.2014, 17:21:38 »
вот эту бяку он мне добавляет если в модулях подключить скрипты через addScriptDeclartion():
Код: javascript
window.addEvent('load', function() {
new JCaption('img.caption');
})
Причем я смотрел это из какой то встроенной библиотеки кусок . С отключенным мутулс послее этого не работает не один скрипт, а отключение мутулс типа unset($this->_scripts... ) я вижу все чаще и чаще в шаблонах.

Кстатии  если вызывать addScriptDeclartion() из компонента то он ничего не добавляет, но если делать unset($this->_script['text/javascript']) То он уберет все скрипты подключенные таким образом из компонента, но оставит те которые подключены в модуле.  Вот уж действительно магия)

Считаю что разработчик должен решать какие библиотеки и в каком порядке подключать в ядре, так как сейчас это реализовано, это конечно не комильфо (мутулс так вобще уже мало кто использует).
Да и в общем все это дело лучше, конечно, делать через плагин (есть даже специальное событие onBeforeCompileHead)
Ну хоть тут есть лазейка. Может быть подскажете какой-нибудь плагин с минимальным функционалом, чтобы можно было подпилить при желании?
интернет-блог: http://websiteprog.ru
*

mark1

  • Захожу иногда
  • 394
  • 39 / 2
Re: Порядок загрузки скриптов
« Ответ #13 : 01.06.2014, 15:30:41 »
smokerman, вам не кажется что это офигеть какие костыли?
мне лично - да, кажется. Не в упрек SmokerMan, имхо это проблема Joomla .
Я так и не знаю иного способа повлиять на очередность загрузки. :( CMS по-моему должна иметь опцию "я знаю что делаю, дайте мне выставить очередность скриптов".

Может быть подскажете какой-нибудь плагин с минимальным функционалом, чтобы можно было подпилить при желании?
Подскажу, но с максимальным функционалом: Jbetolo, бесплатен. http://jproven.com/extensions/jbetolo
C ним нужно терпение, так как при огромном выборе опций прилагается еще и ряд багов. Но если их знать - вопрос решает чудно, можно полностью порулить очередностью скриптов и стилей, + минификация и сжатие. Принцип вкратце: в опциях впишете одну большую очередность скриптов, с учетом всех страниц сайта.
Пример: есть страница (1) со скриптами в очередности a,c и b.
И страница (2) со скриптами в очередности b, с и d.
Вы укажете очередность: a,b,c,d. Чтобы она подошла к любой странице, и к (1) и к (2).
Ну и +учтете очередность Mootools/jQuery (классика жанра). Cо стилями - то же самое.

Я уже пяток сайтов на Jbetolo держу. Есть такие, что набирают более 90 из 100 балов по Google Page speed.
« Последнее редактирование: 01.06.2014, 16:01:15 от mark1 »
*

Sven

  • Захожу иногда
  • 107
  • 6 / 5
Re: Порядок загрузки скриптов
« Ответ #14 : 18.08.2014, 00:26:27 »
Тоже поделюсь своим решением проблемы для Joomla3, может кому-то время сэкономит:

1. Устанавливаем этот плагин http://joomlaforum.ru/index.php/topic,253684.msg1295681.html#msg1295681
В опциях плагина отключаем всё - все три галочки ставим в положение Да. Потому что, даже если отключить например только Mootools и Bootstrap, то Jquery все-равно почему-то тоже отключается. Поэтому чтобы не было глюков, на всякий случай отключаем все начисто.

2. Подключаем Jquery с помощью этого плагина http://eorisis.com/software/joomla-extensions/jquery-system-plugin
Так Jquery всегда будет выше остальных скриптов.

3. Bootstrap3 и остальные скрипты подключаем вручную в шаблоне.
Выше <!DOCTYPE html> между тегами <?php ... ?> пишем такую строчку $doc->addScript('templates/' . $this->template . '/js/bootstrap.min.js');
перед этой строкой обязательно должна быть строка $doc = JFactory::getDocument(); обычно она уже есть в шаблоне, если у вас ее нет, то добавьте и ее. В некоторых шаблонах вместо $doc пишут $document, соответственно так же сделайте и у себя в обоих строках.

Конечно для профи мой совет покажется элементарным, но многим новичкам думаю поможет  ^-^
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Re: Порядок загрузки скриптов
« Ответ #15 : 18.08.2014, 10:45:30 »
Правильно — чтобы сначала загружались все CSS, а потом javascript, в head.php есть две разных ветки-функции, одна подключает все javascript'ы другая CSS, вставь подгрузку jquery раньше всех в javascript ветку.
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

Sven

  • Захожу иногда
  • 107
  • 6 / 5
Re: Порядок загрузки скриптов
« Ответ #16 : 18.08.2014, 15:59:37 »
... вставь подгрузку jquery раньше всех в javascript ветку.

А как это сделать? Можно поподробнее?
Если я так же как автор этого топика подключаю Jquery в шаблоне, то у меня например Jquery подгружается после всех скриптов, которые подгружает компонент интернет-магазина JoomShopping. И в результате не работает Lightbox и все остальное.
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Re: Порядок загрузки скриптов
« Ответ #17 : 18.08.2014, 16:27:08 »
1) Сначало во всех компонентах отключи подгрузку всяких скриптов и пр.
2) в файле сайт\libraries\joomla\document\html\renderer\head.php перед строчкой // Generate script file links
вставляешь нужную библиотеку:
Код
		$buffer .= $tab . '<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>' . $lnEnd; 
3) Далее у меня почему то закомментированы строчки (не помню для чего):
Код
		// Generate script language declarations.
// Удаляет какуюто херь внизу head
# if (count(JText::script()))
# {
# $buffer .= $tab . '<script type="text/javascript">' . $lnEnd;
# $buffer .= $tab . $tab . '(function() {' . $lnEnd;
# $buffer .= $tab . $tab . $tab . 'var strings = ' . json_encode(JText::script()). ';' . $lnEnd;
# $buffer .= $tab . $tab . $tab . 'if (typeof Joomla == \'undefined\') {' . $lnEnd;
# $buffer .= $tab . $tab . $tab . $tab . 'Joomla = {};' . $lnEnd;
# $buffer .= $tab . $tab . $tab . $tab . 'Joomla.JText = strings;' . $lnEnd;
# $buffer .= $tab . $tab . $tab . '}' . $lnEnd;
# $buffer .= $tab . $tab . $tab . 'else {' . $lnEnd;
# $buffer .= $tab . $tab . $tab . $tab . 'Joomla.JText.load(strings);' . $lnEnd;
# $buffer .= $tab . $tab . $tab . '}' . $lnEnd;
# $buffer .= $tab . $tab . '})();' . $lnEnd;
# $buffer .= $tab . '</script>' . $lnEnd;
# }
4) jshopping сам по себе правильно все файлы группирует(удивительно).. с ним ничего делать не надо...
5) предпоследний JS в "три строки" создает конфликты, помню что то про тултипы - .addTooltip или что то в этом духе..
Как убирал не помню, bootstrap.php, там вроде..
Если шаблон Joomla какой то "расфуфыренный" то в настройках тоже по отключай все, но могут перестать работать расфуфырки...)))
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

Sven

  • Захожу иногда
  • 107
  • 6 / 5
Re: Порядок загрузки скриптов
« Ответ #18 : 18.08.2014, 18:11:27 »
Да, все работает, спасибо. Наверно Jquery лучше так и подключать без всяких плагинов.
А как там локальные js файлы подключать? Можно ли путь до них не жестко с адресом прописывать, а как-то универсально? Например если bootstrap.min.js лежит в папке js шаблона.
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Re: Порядок загрузки скриптов
« Ответ #19 : 18.08.2014, 18:27:33 »
Подключай прям следом за jquery  $buffer .= $tab . '<script src="js/твойскрипт.js"></script>' . $lnEnd;
в корне сайта у меня папка js...

Можно ли путь до них не жестко с адресом прописывать, а как-то универсально?

Я напрямую прописываю..
« Последнее редактирование: 18.08.2014, 18:32:11 от shurakana »
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

taurus

  • Захожу иногда
  • 134
  • 4 / 0
  • Bolden.Ru
Re: Порядок загрузки скриптов
« Ответ #20 : 27.02.2015, 15:40:26 »

2. Подключаем Jquery с помощью этого плагина http://eorisis.com/software/joomla-extensions/jquery-system-plugin
Так Jquery всегда будет выше остальных скриптов.


Спасибо за подсказку.
После перехода на Joomla 3.4 очерёдность загрузки jQuery стала непредсказуемой, поэтому на некоторых страницах переставали работать расширения на этом фреймворке. Плагин полностью решил проблему.
*

jitendra

  • Новичок
  • 4
  • 1 / 0
Re: Порядок загрузки скриптов
« Ответ #21 : 02.04.2015, 19:15:36 »
Столкнулся с проблемой порядка загрузки скриптов в 3.4.1

Проблему решил следующим образом:

1. JHtml::_('jquery.framework');
2. $document->addScript(JURI::base().'components'.DS.'com_componentname'.DS.'assets'.DS.'js'.DS.'jquery.jqGrid.js');

Строчка №1 решила проблему, теперь jquery грузится первым
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Порядок загрузки скриптов
« Ответ #22 : 02.04.2015, 21:03:02 »
Напишу решение данной задачи и прикреплю тему
Пишем в шаблоне нашего сайта
Код: php-brief
$this->myScripts = isset($this->myScripts)? $this->myScripts: array();
$this->myScripts = isset($this->myStyles)? $this->myStyles: array();
foreach($this->myScripts as $scr) $this->addScript($scr);
foreach($this->myStyles as $style) $this->addStyleSheet($style);
Теперь если скрипт  или стиль не в том порядке выводится пишем в месте подключения
Код: php
$doc = JFactory::getDocument();
$doc->myScripts[] = 'myPath/myScripts.js';
$doc->myStyles[] = 'myPath/myStyles.css';
/*
$doc->myScripts[] = 'myPath/myScripts1.js';
$doc->myStyles[] = 'myPath/myStyles1.css';
*/

*

saharin88

  • Захожу иногда
  • 291
  • 20 / 1
  • JoomWork
Re: Порядок загрузки скриптов
« Ответ #23 : 20.08.2015, 15:08:29 »
defined('JPATH_BASE') or die;

jimport('joomla.plugin.plugin');


class plgSystemJquery_top extends JPlugin
{

    protected $scripts = array();

    public function onBeforeCompileHead()
    {

        $document = JFactory::getDocument();
        $scripts = $document->_scripts;
        $new = array();

        $a_jquery = array('/media/jui/js/jquery-migrate.min.js', '/media/jui/js/jquery-noconflict.js', '/media/jui/js/jquery.min.js');

        foreach ($scripts as $k=>$v) {
            if(in_array($k, $a_jquery)) {
                $new[$k] = $scripts[$v];
                unset($scripts[$k]);
            }
        }

        if(count($new) > 0) {
            foreach ($new as $k=>$v) {
                $scripts[$k] = $v;
            }
        }

        $scripts = array_reverse($scripts);

        $document->_scripts = $scripts;


        return true;
    }

}
« Последнее редактирование: 20.08.2015, 22:00:39 от saharin88 »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Порядок загрузки скриптов
« Ответ #24 : 20.08.2015, 15:14:50 »
Просто "правильно" надо подключать скрипты в модулях, и тогда не будет с ними проблем.
интернет-блог: http://websiteprog.ru
*

saharin88

  • Захожу иногда
  • 291
  • 20 / 1
  • JoomWork
Re: Порядок загрузки скриптов
« Ответ #25 : 20.08.2015, 15:54:16 »
Просто "правильно" надо подключать скрипты в модулях, и тогда не будет с ними проблем.

та ну, бывают люди ставят различные модули, в которых подключаются скрипты, и этот модуль нужен, что ж теперь лазать по всем модулям и смотреть где что подключено?

это по истине косяк в Joomla, больше никак не назовешь, потому хочется решения (в идеале расширения с возможностью перемещать подключаемые скрипты)
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Порядок загрузки скриптов
« Ответ #26 : 20.08.2015, 16:09:27 »
Если модуль написан криво то причем тут система? Если бы скрипты в модуле подключались посредством добавления в head через массив scripts, то проблем бы не было, всегда их можно было бы поменять местами в плагине. Если разработчик модуля прописывает скрипты в body, почему разработчики Joomla должны за это отвечать? Меньше ставьте всякие модули кривые, вместо того чтобы жаловаться на бесплатный продукт.

Единственную проблему я вижу в том что проблематично отключить встроенные в систему скрипты, давно пора выпилить mootools из системы. Но по крайней мере есть функционал плагинов, который все же позволяет это сделать. Во многих фреймворках есть возможность указать куда подключать скрипты в body, в head, на domready. Вот этот механизм неплохо было бы тоже реализовать.
« Последнее редактирование: 20.08.2015, 16:19:21 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

saharin88

  • Захожу иногда
  • 291
  • 20 / 1
  • JoomWork
Re: Порядок загрузки скриптов
« Ответ #27 : 20.08.2015, 16:23:07 »
Если модуль написан криво то причем тут система? Если бы скрипты в модуле подключались посредством добавления в head через массив scripts, то проблем бы не было, всегда их можно было бы поменять местами в плагине. Если разработчик модуля прописывает скрипты в body, почему разработчики Joomla должны за это отвечать? Меньше ставьте всякие модули кривые, вместо того чтобы жаловаться на бесплатный продукт.

Единственную проблему я вижу в том что проблематично отключить встроенные в систему скрипты, давно пора выпилить mootools из системы. Но по крайней мере есть функционал плагинов, который все же позволяет это сделать. Во многих фреймворках есть возможность указать куда подключать скрипты в body, в head, на domready. Вот этот механизм неплохо было бы тоже реализовать.

в теме речь идет о подключении скриптов через
Код
JFactory::getDocument()->addScript('myscrip.js');
JHtml::script('myscrip.js');


Если бы скрипты в модуле подключались посредством добавления в head через массив scripts, то проблем бы не было


вот при таком раскладе, бутстрап подключится первым (это кусок кода из модуля):


Код
JHtml::_('bootstrap.framework');

$document = JFactory::getDocument();

$scripts = $document->_scripts;
$new = array();

$a_jquery = array('/media/jui/js/bootstrap.min.js', '/media/jui/js/jquery-migrate.min.js', '/media/jui/js/jquery-noconflict.js', '/media/jui/js/jquery.min.js');

foreach ($scripts as $k=>$v) {
    if(isset($a_jquery[$k])) {
        $new[$k] = $scripts[$v];
        unset($scripts[$k]);
    }
}

if(count($new) > 0) {
    foreach ($new as $k=>$v) {
        $scripts[$k] = $v;
    }
}

$scripts = array_reverse($scripts);

$document->_scripts = $scripts;
« Последнее редактирование: 20.08.2015, 21:24:38 от ELLE »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Порядок загрузки скриптов
« Ответ #28 : 20.08.2015, 16:38:03 »
Это кусок из модуля или из плагина? До этого вы тоже самое приводили в плагине. Вы не можете толком объяснить даже чего хотите..Я вам говорю еще раз,  если в модулях скрипт подключен через addScript то в плагине его порядок  можно будет менять как угодно на событии onBeforeCompileHead.
интернет-блог: http://websiteprog.ru
*

saharin88

  • Захожу иногда
  • 291
  • 20 / 1
  • JoomWork
Re: Порядок загрузки скриптов
« Ответ #29 : 20.08.2015, 18:56:40 »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Медиа-менеджер. Размер данного файла слишком велик для загрузки

Автор Veteran

Ответов: 6
Просмотров: 2435
Последний ответ 16.07.2018, 17:22:46
от darya322
Как сделать порядок мета тегов?

Автор Meiir

Ответов: 4
Просмотров: 1433
Последний ответ 11.05.2017, 17:52:33
от vipiusss
Порядок плагинов на странице

Автор intcorp

Ответов: 5
Просмотров: 1651
Последний ответ 26.04.2017, 23:51:10
от UN_Tony
После загрузки на хостинг появилась проблема описанная ниже!

Автор pomogu_chem_smogu

Ответов: 6
Просмотров: 1790
Последний ответ 16.02.2017, 16:29:34
от SeBun
Скорость загрузки сайта

Автор sanni55

Ответов: 4
Просмотров: 928
Последний ответ 06.02.2017, 17:07:13
от sanni55