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

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
J3.3.3
Как правило, стили и скрипты модулей подгружаются после стилей и скриптов основного шаблона сайта.
Наблюдаю картину, когда стили и скрипты модуля, объявленного через {loadmodule }, загружаются раньше стилей и скриптов шаблона. Имхо, это непорядок, но куда копать, не знаю.
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Из-за того, что скрипты модуля подгружаются раньше, чем шаблоном грузится jquery.js, все скрипты на странице отказываются работать.
Что делать-то?
*

bandanu

  • Захожу иногда
  • 162
  • 3 / 0
Попробуйте так:
<head>
<script src="http://yandex.st/jquery/1.3.2/jquery.min.js"></script>
<jdoc:include type="head" />
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Можно и так, но это не совсем правильно, ибо используется JHtml::_('jquery.framework'); т.е. подгрузка jquery из ядра

Пробую через {loadposition } - модуль не вставляется.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Потому что loadmodule плагин работает на событии  onContentPrepare, который видимо исполняет код модуля до исполнения кода шаблона. И кстатии loadposition тоже этот плагин заменяет. Вы можете переписать этот плагин чтобы он на каком нибудь другом событии срабатывал (например на onContentBeforeDisplay), но проще всего подключать скрипты в модуле через <script> . тогда они будут после head загружатся.
« Последнее редактирование: 06.09.2014, 00:36:44 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Переустановил модуль, стал появляться через {loadposition }, однако скрипты и стили грузятся раньше, чем шаблон. Что это!?
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
я же вам выше написал и за замену loadposition и loadmodule один и тот же плагин отвечает
интернет-блог: http://websiteprog.ru
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Как-то неправильно этот onContentPrepare срабатывает: все должно грузится только после шаблона, имхо, это уже баг.
Получается, грузить скрипты и стили нужно во вьюхе модуля? но это уже противоречит mvc.
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Подгружать во вьюхе не помогло - все равно раньше шаблона загружаются.
Есть возможность заставить срабатывать plg_loadmodule после загрузки шаблона?
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Мне кажется тут надо писать не контентный плагин а системный и на событие onBeforeCompileHead. Я думаю можно реализовать даже свой метод вроде addScript(...) но с управлением порядка подгрузки скриптов.
интернет-блог: http://websiteprog.ru
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Порядок загрузки стилей и скриптов
« Ответ #10 : 06.09.2014, 00:53:48 »
А все просто, в шаблоне:
Код: php
$scripts = $this->_scripts;
$this->_scripts = array();
$this->addScript( 'Скрипты которые должны стоять первыми' );
$this->_scripts = array_merge( $this->_scripts, $scripts );
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Порядок загрузки стилей и скриптов
« Ответ #11 : 06.09.2014, 00:57:23 »
ну если через addScript их в шаблоне добавлять то они и так в конце будут стоять разве нет?
интернет-блог: http://websiteprog.ru
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Порядок загрузки стилей и скриптов
« Ответ #12 : 06.09.2014, 00:58:43 »
ну если через addScript их в шаблоне добавлять то они и так в конце будут стоять разве нет?
Будут, а надо в начале страницы ))
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Порядок загрузки стилей и скриптов
« Ответ #13 : 06.09.2014, 00:59:55 »
Мне кажется тут надо писать не контентный плагин а системный и на событие onBeforeCompileHead. Я думаю можно реализовать даже свой метод вроде addScript(...) но с управлением порядка подгрузки скриптов.
Ппц, а plg_loadmodule тогда нафига? я не в шоке - а в @x#e

А все просто, в шаблоне:
Код: php
$scripts = $this->_scripts;
$this->_scripts = array();
$this->addScript( 'Скрипты которые должны стоять первыми' );
$this->_scripts = array_merge( $this->_scripts, $scripts );
То, что подгружается в head, в т.ч. jquery из ядра, получается в конце
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Порядок загрузки стилей и скриптов
« Ответ #14 : 06.09.2014, 01:03:22 »
В шаблоне:
Код: php
JHtml::_('jquery.framework'); // до доктайпа
...
echo '<head>';
  echo '<meta charset="utf-8">';
  echo '<meta http-equiv="X-UA-Compatible" content="IE=edge">';
  echo '<meta name="viewport" content="width=device-width, initial-scale=1">';
  echo '<link rel="shortcut icon" href="templates/'.$this->template.'/images/favicon.png">';
  echo '<jdoc:include type="head" />';
  $doc->setGenerator('');
  echo '<!--[if lt IE 9]>'.
    '<script src="../js/ie8-responsive-file-warning.js"></script>'.
    '<script src="http://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>'.
    '<script src="http://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>'.
    '<![endif]-->';
  $scripts = $this->_scripts;
  $this->_scripts = array();
  $doc->addScript('/templates/'.$this->template.'/js/bs3.min.js');
  $doc->addScript('/templates/'.$this->template.'/js/template.js');
  $this->_scripts = array_merge( $this->_scripts, $scripts );

  $doc->addStyleSheet('/templates/system/css/system.css');
  $doc->addStyleSheet('/templates/'.$this->template.'/css/bs3.css');
  $doc->addStyleSheet('/templates/'.$this->template.'/css/template.css');
echo '</head>';
Во фронте:

  <link rel="stylesheet" href="/media/mod_order_present/css/mod_order_present.css" type="text/css" />
  <link rel="stylesheet" href="/templates/system/css/system.css" type="text/css" />
  <link rel="stylesheet" href="/templates/ceruleanai/css/bs3.css" type="text/css" />
  <link rel="stylesheet" href="/templates/ceruleanai/css/template.css" type="text/css" />

  <script src="/templates/ceruleanai/js/bs3.min.js" type="text/javascript"></script>
  <script src="/templates/ceruleanai/js/template.js" type="text/javascript"></script>
  <script src="/media/mod_order_present/js/jquery.validate.min.js" type="text/javascript"></script>
  <script src="/media/mod_order_present/js/mod_order_present.js" type="text/javascript"></script>

  <script src="/media/jui/js/jquery.min.js" type="text/javascript"></script>
  <script src="/media/jui/js/jquery-noconflict.js" type="text/javascript"></script>
  <script src="/media/jui/js/jquery-migrate.min.js" type="text/javascript"></script>
  <script src="/media/system/js/caption.js" type="text/javascript"></script>

Выделенное - надо в конец
« Последнее редактирование: 06.09.2014, 01:08:29 от AlekVolsk »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Порядок загрузки стилей и скриптов
« Ответ #15 : 06.09.2014, 01:05:14 »
Не ну если их через шаблон грузить то это неинтересно..в шаблоне можно манипулировать массивом scripts как заблагоразумится. А вот сделать так чтобы в модулях прописывать скрипты и управлять порядком их подгрузки через метод какой нибудь..Кстатии если в компоненте скрипты подключаются то они тоже раньше всех в массив scripts попадают поэтому для компонентов тоже может быть актуальным.
интернет-блог: http://websiteprog.ru
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Порядок загрузки стилей и скриптов
« Ответ #16 : 06.09.2014, 01:05:42 »
Ппц, а plg_loadmodule тогда нафига? я не в шоке - а в @x#e
То, что подгружается в head, в т.ч. jquery из ядра, получается в конце
Если нужно jQuery из ядра то ставьте везде и в шаблоне и в модуле до подключения скриптов:
Код: php
JHtml::_( 'jquery.framework', false, null, false );
и тогда будет сначала jQury подрубаться
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Порядок загрузки стилей и скриптов
« Ответ #17 : 06.09.2014, 01:10:53 »
Если нужно jQuery из ядра то ставьте везде и в шаблоне и в модуле до подключения скриптов:
Код: php
JHtml::_( 'jquery.framework', false, null, false );
и тогда будет сначала jQury подрубаться
не помогло (
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Порядок загрузки стилей и скриптов
« Ответ #18 : 06.09.2014, 01:18:28 »
Объявил модуль в стандартной позиции, убрав из материала - все ок, подгрузка скриптов вконец списка.
Снова переместил в материал - опять вначале списка выплывают. Тут походу явный косяк движка, когда шаблон грузится после onContentPrepare
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Порядок загрузки стилей и скриптов
« Ответ #19 : 06.09.2014, 01:20:39 »
попробуйте вставить в шаблон: templates/ваш_шаблон/html/com_content/article/default.php
JHtml::_( 'jquery.framework', false, null, false );
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Порядок загрузки стилей и скриптов
« Ответ #20 : 06.09.2014, 01:22:32 »
Как переместить элемент массива в начало массива? Хочу ручками после подгрузки всез скриптов поднять /media/jui/js/jquery.min.js наверх
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Порядок загрузки стилей и скриптов
« Ответ #21 : 06.09.2014, 01:24:21 »
Удалить из _scripts подключить как я писал выше!
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Порядок загрузки стилей и скриптов
« Ответ #22 : 06.09.2014, 01:25:04 »
попробуйте вставить в шаблон: templates/ваш_шаблон/html/com_content/article/default.php
JHtml::_( 'jquery.framework', false, null, false );
не помогло
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Порядок загрузки стилей и скриптов
« Ответ #23 : 06.09.2014, 01:31:28 »
распечатай что у тебя там в scripts лежит перед всеми манипуляциями в шаблоне.
интернет-блог: http://websiteprog.ru
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Порядок загрузки стилей и скриптов
« Ответ #24 : 06.09.2014, 01:43:03 »
[spoiler title=Содержимое $this->_scripts]Array
(
    [/media/mod_order_present/js/jquery.validate.min.js] => Array
        (
            [mime] => text/javascript
            [defer] =>
            [async] =>
        )

    [/media/mod_order_present/js/mod_order_present.js] => Array
        (
            [mime] => text/javascript
            [defer] =>
            [async] =>
        )

    [/media/jui/js/jquery.min.js] => Array
        (
            [mime] => text/javascript
            [defer] =>
            [async] =>
        )

    [/media/system/js/caption.js] => Array
        (
            [mime] => text/javascript
            [defer] =>
            [async] =>
        )

)
[/spoiler]
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Порядок загрузки стилей и скриптов
« Ответ #25 : 06.09.2014, 01:44:58 »
Сделал такое:
Спойлер
[свернуть]
Это помогло, но я не понимаю, почему это вообще так?
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Порядок загрузки стилей и скриптов
« Ответ #26 : 06.09.2014, 01:47:05 »
Не знаю протестировал сейчас кучей вариантов таким методом:
Код: php
$scripts = $this->_scripts;
$this->_scripts = array();
$this->addScript( 'Скрипты которые должны стоять первыми' );
$this->_scripts = array_merge( $this->_scripts, $scripts );
И выводом модуля через {loaspositon position} и всегда скрипты которые должны стоять первыми у меня первые.. все остальное подрубаются после них..
что то вы делаете явно не так .. тестировал на Joomla 3.3.3
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Порядок загрузки стилей и скриптов
« Ответ #27 : 06.09.2014, 01:51:21 »
что то вы делаете явно не так ..
Допускаю, вот только где?
Шаблон:
Спойлер
[свернуть]
Модуль:
Спойлер
[свернуть]
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Порядок загрузки стилей и скриптов
« Ответ #28 : 06.09.2014, 01:54:35 »
омг.. шаблон это жесть..
зачем вы HTML выводите через echo PHP?)
Вот пример шаблона
Спойлер
[свернуть]

Если работает оставьте пока в таком варианте..
Но вообще видеть бы print_r($this->_scripts); до манипуляций с ним!
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Порядок загрузки стилей и скриптов
« Ответ #29 : 06.09.2014, 01:57:18 »
Но вообще видеть бы print_r($this->_scripts); до манипуляций с ним!
В 24 ответе
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

reCAPTCHA V2 Google - Для Joomla 3

Автор Alex GOOD

Ответов: 35
Просмотров: 8337
Последний ответ 10.01.2024, 21:41:38
от Vastriet
Как убрать текст на главной?

Автор m03mug08

Ответов: 5
Просмотров: 1062
Последний ответ 07.09.2018, 14:52:24
от Konst
Проблема отображения модулей на шаблоне proto

Автор Artefact

Ответов: 10
Просмотров: 974
Последний ответ 17.08.2017, 18:29:40
от Artefact
[Решено]Изменить внешний вид пагинации

Автор pavel2950

Ответов: 1
Просмотров: 1112
Последний ответ 17.08.2017, 15:31:24
от pavel2950
Кто запускал image recycle кроном?

Автор pavelrer

Ответов: 23
Просмотров: 1681
Последний ответ 14.08.2017, 17:16:10
от dmitry_stas