Додавання файлу javascript у колонтитулі та власні стилі


9

Для швидкого завантаження сторінки мені потрібно вставити JS в кінці сторінки з компонентів та модулів.

Наступний спосіб оголошення сценаріїв не працює, щоб вставити його внизу, тому що немає параметра, щоб його розмістити в нижньому колонтитулі.

$rsws_document  = JFactory::getDocument(); 
$rsws_document->addScript();

То які лаконічні способи виконати моє призначення? Якщо joomla не забезпечує такої функціональності, то це істотний недолік швидкості завантаження сторінки.

Я також хочу додати спеціальні таблиці стилів з модуля, щоб вони вводилися на сторінку лише один раз, навіть якщо той самий модуль додає його кілька разів на цій сторінці -

<style type="text/css"> .classname { color:red; }.....</style>

Як я можу цього досягти?


1
Ви повинні тримати своє запитання до однієї теми. У вас тут два питання.
Бакуаль

1
є розширення, яке може допомогти: extensions.joomla.org/extension/scriptsdown
noiragneau

Відповіді:


6

JDocument-> addScript () має варіанти відкласти завантаження сценарію та / або завантажити його асинхронізувати. Див. Документ API: http://api.joomla.org/cms-3/classes/JDocumentHTML.html#method_addScript

Це дозволить браузеру завантажувати сценарії пізніше в процесі, що допоможе з часом завантаження сторінки.

Немає API для завантаження скриптів у нижній частині сторінки. Якщо вам це потрібно, вам доведеться скористатися сторонніми розширеннями або безпосередньо додати їх до шаблону.


Так, я знав про це. Але у wordpress є такі особливості, що стосуються моїх запитань у випадку як сценаріїв, так і спеціальних css. Тому Joomla повинен додати його.
дев-м

Була дискусія, щоб додати щось подібне. Особисто я не бачу переваги додавати його внизу над defer / async.
Бакуаль

2

На даний момент я думаю, що немає можливості завантажувати сценарії внизу сторінки.

Для вашого другого питання ви можете використовувати статичну булеву властивість і встановити її як істинну при першому виведенні вашого css. Для наступних примірників модуля просто протестуйте цю властивість, щоб вирішити, чи потрібно додати ваш css чи ні.

Можливо, хорошим місцем для додання цієї статичної властивості є клас допоміжних модулів.

З повагою,


2

$ document-> addScript () завжди додає скрипти в розділі заголовка перед тегом. Отже, якщо ви хочете завантажити файл сценарію внизу сторінки, вам потрібно буде включити js у цей файл, просто використовуючи<script src="{pathtojacvascriptfile}"></script>

Я сподіваюся, що це може допомогти


2

Зараз немає способу додати скрипт у колонтитул. Однак ви можете зробити плагін, який отримує висновок, шукає тег відповідного імені, як колонтитул, і використовувати str_replace для додавання у свій код.

Але ви можете використовувати ці розширення для досягнення цього:

  1. Скрипти
  2. Оптимізація JCH

Також я знайшов один метод. Я вважаю за краще не зламати основний код, але це найкраще, що я можу придумати на даний момент.

перевірте це посилання - файли Javascript включені у колонтитул

Сподіваюся, це допоможе іншим :)


2

Ми використовуємо модуль під назвою "Порожній модуль", який дозволяє помістити будь-який скрипт (PHP, Java, CSS, HTML, будь-який інший) та вибрати, куди його завантажити (голова, тіло, кінець тіла тощо).

Це безкоштовно, і я вважаю це абсолютно корисним: http://extensions.joomla.org/extensions/core-enhancements/coding-a-scripts-integration/custom-code-in-modules/3668

Для переміщення сценаріїв з нижньої частини тіла трохи більше роботи. Використовуй це:

Включити в шаблон:

<? php
$ head = $ doc-> getHeadData ();
// Видалити сценарії
unset ($ doc -> _ scripts [JURI :: root (true). '/ media/system/js/mootools-more.js']);
?>

Додайте один рядок "unset" для кожного сценарію, який потрібно видалити з голови. Потім додайте його до порожнього модуля завантаження внизу (положення налагодження?). Одним плюсом, якщо ви робите різні порожні модулі, є те, що ви можете завантажувати сценарії лише там, де потрібно (наприклад, екземпляр модуля лише для motools, завантажуючи його лише на певну сторінку).

Для стилів можна також використовувати модуль Blank.

Я сподіваюся, що це допомагає.


0

Я ще не пробував себе. Ви можете створити модуль, який не містить HTML, просто виводить сценарії та стилі, але він знаходиться в нижньому положенні модуля на сторінках, де відображається ваш інший модуль.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.