Нещодавно я розробив модуль, який вимагав введення певних файлів JS та CSS у <head>
кожну сторінку. Спочатку я використовував:
$doc =& JFactory::getDocument();
$doc->addScript(JURI::base(true).'/modules/mod_x/js/mod_x.js');
Однак я помітив, що при вмиканні кешування сайт завантажував кешовану версію з /cache
і не кешовану версію /modules/mod_x/js/
, викликаючи помилки JS.
Коли я змінив це на:
JHtml::script(Juri::base().'modules/mod_x/js/mod_x.js');
Сценарій завантажувались лише один раз із кешу, вирішуючи ці помилки.
Я читав у документах, що addScript
метод був більш "низьким рівнем", ніж JHtml:script
метод, але поза тим, що ...
Звичайно, вам також знадобиться вручну зашифрувати деякі кроки [що JHtml: скрипт робить для вас], які будуть виконані автоматично за допомогою методу [JHtml: script] вище [якщо ви використовуєте addScript].
... більше деталей не наводиться.
То яка різниця? Я припускаю, що JHtml:script
врешті-решт викликає addScript
об’єкт документа в якийсь момент, але чи інші кроки-посередники зроблені першими?