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

bupy7

  • Осваиваюсь на форуме
  • 30
  • 0 / 2
Собственно сабж =)
Свои скрипты подключаю так:
Код
        $document = &JFactory::getDocument();
        $document->addScript($host . 'code.js');
В итоге они висят раньше библы jQuery и прочих, когда должны быть позже по логике.
Собственно разъясните, что не так и что так. Может просто я криворукий. Не исключаю.
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 427 / 4
1. прекращайте писать & перед JFactory и т.д.
2. перед $document->addScript($host . 'code.js'); напишите jimport('jquery.framework');
*

bupy7

  • Осваиваюсь на форуме
  • 30
  • 0 / 2
Istaan,
1. Воо, всегда волновал этот вопрос. Хотя код JFactory и т.д. смотрел, там синглтон есть, поэтому не понимал зачем ссылку делать, хотя в некоторых кодах пишут. Ну, не надо, значит не будем =)
2. Сейчас попробую.

Спасибо, большое! =)
« Последнее редактирование: 08.09.2013, 21:48:16 от bupy7 »
*

bupy7

  • Осваиваюсь на форуме
  • 30
  • 0 / 2
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 427 / 4
Вот так надо http://stackoverflow.com/questions/12471067/importing-jquery-into-joomla
да знаю как надо, да вот только позно и чете попутал jimport с JHTML
*

ecolora

  • Завсегдатай
  • 1479
  • 170 / 2
  • творец
Только не забудьте добавить в настройки расширения отключение импорта jQuery, пожалуйста, чтобы не приобщаться к армии криворуких студентов-разработчиков, которые мало того, что пихают jQuery везде где не лень, так и забывают добавить возможность его отключения в настройках. В итоге - конфликты jQuery на сайтах и неработающие расширения.

Спасибо, коллега! :)
Я рифме друг словесной. Тут
Свой упражняю словоблуд:
Блог Ecolora
*

ecolora

  • Завсегдатай
  • 1479
  • 170 / 2
  • творец
Вот так надо http://stackoverflow.com/questions/12471067/importing-jquery-into-joomla

Хороший пример, прокомментирую только, что в части Joomla 2.5 он годится только для своего же расширения - чтобы не грузить jQuery дважды (например контентный плагин в Блоге категории). А поскольку каждый пихает jQuery как ему удобно, то данная проверка в случае компонента бессмысленна и малополезна при использовании модуля (обычно загружается 1 копия на странице).
« Последнее редактирование: 09.09.2013, 10:27:14 от ecolora »
Я рифме друг словесной. Тут
Свой упражняю словоблуд:
Блог Ecolora
*

ecolora

  • Завсегдатай
  • 1479
  • 170 / 2
  • творец
У себя же в контентном плагине делаю так:

Код
$mosConfig_live_site = JURI::base (false);
...
if (!defined('_jqcomm')){ //чтобы 2 раза не крутить
              define('_jqcomm', '1');
              if ($alowjq) {
              if (ext_isJoomla('3.0', '>=' )) JHtml::_('jquery.framework');
                else $document->addScript($mosConfig_live_site.'/components/com_commedia/classes/jquery.min.js');
              }
              $document->addScript($mosConfig_live_site.'/components/com_commedia/players/jquery.jplayer.min.js'); //плеер
         }

ext_isJoomla - встроенная в расширение функция проверки версии Joomla. Годится для всех от самых старых, до самых новых. Скажу честно: слямзил в extplorer-е. Смысл изобретать велосипед.
Я рифме друг словесной. Тут
Свой упражняю словоблуд:
Блог Ecolora
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 427 / 4
У себя же в контентном плагине делаю так:
Объясните смысл этого кода? зачем он вообще нужен?
*

ecolora

  • Завсегдатай
  • 1479
  • 170 / 2
  • творец
Этот код загружает jQuery в контентном плагине, если:
1) Она еще не загружалась
Код
if (!defined('_jqcomm'))
2) Настройками положено загружать jQuery:
Код
if ($alowjq)

Загрузка осуществляется по-разному в зависимости от версии Joomla.
Я рифме друг словесной. Тут
Свой упражняю словоблуд:
Блог Ecolora
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 427 / 4
Как это спасет если сторонний быдло расширение для 3.0 вызывает jquery не через JHtml::_('jquery.framework')
а так же как и вы $document->addScript($mosConfig_live_site.'/components/com_commedia/classes/jquery.min.js');
так же само сделает кто нить модуль который будет вызывать JFactory::getDocument()->addScript('http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js');, и будут у вас две версии jquery
« Последнее редактирование: 09.09.2013, 12:02:32 от Istaan »
*

ecolora

  • Завсегдатай
  • 1479
  • 170 / 2
  • творец
Вот именно! Каждый вызывает как хочет. Нет единообразия. Поэтому приходится в случае конфликта разбираться и устранять причину. Вдвойне приятно, когда для этого не нужно править код, а помогает отключение jQuery в настройках.
Зачастую, если вижу сайт с K2, к примеру, то во всех остальных расширениях можно смело отключать jQuery. Потому что K2 грузит библиотеку на всех страницах и раньше основных скриптов.
Я рифме друг словесной. Тут
Свой упражняю словоблуд:
Блог Ecolora
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 427 / 4
ну вот я и спрашиваю какой вообще смысл у вашего кода.. а К2 тот ещё бред собачий.. грузить jquery даже там где нет упоминания о k2 это вообще /facepalm
*

ecolora

  • Завсегдатай
  • 1479
  • 170 / 2
  • творец
ну вот я и спрашиваю какой вообще смысл у вашего кода.. а К2 тот ещё бред собачий.. грузить jquery даже там где нет упоминания о k2 это вообще /facepalm

У меня такое ощущение, что мы говорим как казах с татарином (никаких параллелей, просто как пример). Насчет К2: о вкусах не спорят. И хоть я не использую ни на одном из своих сайтов, видел его на многих-многих сайтах. Был бы бред, наверное не пользовались бы. Может ошибаюсь, и Вы такой умный, а те кто его используют - дураки. ;)

У моего кода смысл именно применительно к контентному плагину. Суть я описал. И остальное - читайте выше.

Про то где и как грузить jQuery - иногда без него и правда никак (если нет аналогов в Joomla). Это относится к версиям ниже 3.0.

От 3.0 и выше разработчики добавили jQuery в ядро. Наверное тоже считают, что она нужна (кстати в админке понятно, зачем, во фронтпейдже пока не особо заметил, в стандартных шаблонах она вроде как не используется).
Я рифме друг словесной. Тут
Свой упражняю словоблуд:
Блог Ecolora
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 427 / 4
Давайте вам объясню всю бесмысленность вашего кода:
$document->addScript($mosConfig_live_site.'/components/com_commedia/classes/jquery.min.js');
хоть в двухсот файлах размещайте этот код все равно будет подключение только одной версии jQuery...
так же как и строка JHtml::_('jquery.framework') всего лишь раз подгрузит.. у вас вообще должна быть такая строка
вообще код вашего плагина упрощается до:

Код: php
if (!defined('_jqcomm') && $alowjq ){ //чтобы 2 раза не крутить
define('_jqcomm', '1');
if (ext_isJoomla('3.0', '>=' )) JHtml::_('jquery.framework');
else $document->addScript($mosConfig_live_site.'/components/com_commedia/classes/jquery.min.js');
$document->addScript($mosConfig_live_site.'/components/com_commedia/players/jquery.jplayer.min.js'); //плеер
}

а учитывая что я выше сказал о том что и так не вставится скрипт если он уже вставлялся то сократить код можно до:
Код: php
if ($alowjq ){
if (ext_isJoomla('3.0', '>=' )) JHtml::_('jquery.framework');
else $document->addScript($mosConfig_live_site.'/components/com_commedia/classes/jquery.min.js');
$document->addScript($mosConfig_live_site.'/components/com_commedia/players/jquery.jplayer.min.js'); //плеер
}

*

ecolora

  • Завсегдатай
  • 1479
  • 170 / 2
  • творец
Если действительно будет так (я просто не знал, что при добавлении скрипта через $document->addScript в Joomla проверяется уже его наличие), снимаю шляпу. :-) Век живи - век учись.

Хотя вообще-то странно... вот представьте ситуацию: блог материалов категории... у каждого своя отдельная обработка onContentPrepare, и что, скрипт загрузится 1 раз? Надо проверить. :)

...

Проверил. Спасибо за совет, коллега!
« Последнее редактирование: 09.09.2013, 16:51:12 от ecolora »
Я рифме друг словесной. Тут
Свой упражняю словоблуд:
Блог Ecolora
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 427 / 4
Если действительно будет так (я просто не знал, что при добавлении скрипта через $document->addScript в Joomla проверяется уже его наличие),
ну не совсем проверяется ) скорее перезаписывается ))
вот метод AddScript
Код: php
public function addScript($url, $type = "text/javascript", $defer = false, $async = false)
{
$this->_scripts[$url]['mime'] = $type;
$this->_scripts[$url]['defer'] = $defer;
$this->_scripts[$url]['async'] = $async;

return $this;
}
как видите ключем есть $url текущего скрипта, и если вы будете вносить один и тот же скрипт в разных местах он банально запишется в существующий ключ ))
*

ecolora

  • Завсегдатай
  • 1479
  • 170 / 2
  • творец
Понятно, спасибо. Просто никогда не смотрел эту функцию, не было необходимости. А стоило. Я +анул.
Я рифме друг словесной. Тут
Свой упражняю словоблуд:
Блог Ecolora
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 427 / 4
Понятно, спасибо. Просто никогда не смотрел эту функцию, не было необходимости. А стоило. Я +анул.
для стилей таже фигня ) но вот если будете писать плагин/модуль и в нем будет addScriptDeclaration или addStyleDeclaration вот в них нужно будет писать подобное, иначе продублируется )
*

ecolora

  • Завсегдатай
  • 1479
  • 170 / 2
  • творец
для стилей таже фигня ) но вот если будете писать плагин/модуль и в нем будет addScriptDeclaration или addStyleDeclaration вот в них нужно будет писать подобное, иначе продублируется )
Уже пишу и обязательно проверяю однократный вызов. ;) Не первый год за рулем, коллега! :)

Я даже, наверное, и сделал ошибочный вывод насчет путей к скриптам из-за того, что столкнулся с повторным вызовом кода скрипта на странице и добавил условие.
Я рифме друг словесной. Тут
Свой упражняю словоблуд:
Блог Ecolora
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Почему Joomla не поддерживает формат webp?

Автор Sensession

Ответов: 73
Просмотров: 7058
Последний ответ 26.05.2022, 08:39:45
от Thomas Bergersen
Знакомый почему-то не может войти в учетную запись Joomla со своего компьютера

Автор admi5575

Ответов: 6
Просмотров: 510
Последний ответ 18.12.2021, 20:34:59
от draff
Почему не работает форма поиска type="search"

Автор Hufflepuff

Ответов: 3
Просмотров: 250
Последний ответ 16.12.2021, 12:13:46
от Hufflepuff
jQuery. Передать значение в поле формы Битрикс24

Автор fbr

Ответов: 40
Просмотров: 963
Последний ответ 21.11.2021, 12:05:18
от gartes
Хочу прописать для таблицы шрифт и размер, но почему-то ошибка rbrace

Автор polezniy

Ответов: 2
Просмотров: 248
Последний ответ 24.10.2021, 19:05:10
от polezniy