Foren / National / Russian / Тех. поддержка / Вставка JS на определенной странице

Вставка JS на определенной странице

Macik
#42006 25. August 2016, 23:16
dFooter#42002 kushelbek:
Такой вопрос, а где можо почитать про функции для страниц и про условия в файле name.rc.php?

Каких-то особых «функций для страниц нет». Есть API у модуля `Page`, но там именно для работы со страницами (добавить/удалить и т.п.). 

Про условия в файлах `*.rc.php` — общие правила примерно таковы:

1. этап — выбрать правильную функцию:

Файлы (js/css) подключаются через специальные функции. (Использовать жесткие ссылки прямо в TPL файлах, кроме случаев «сайт на коленке|быстро правлю чужой код» — не рекомендуется.)
Функции подключения файлов сейчас (версия >= 0.9.18) они убраны в отдельный класс Resources, вот тут есть их список с описанием (на англ.)). Суть их разнообразия сводится к следующему:
1. загружать ли указанный ресурс в заголовке (Resources::addFile или Resources::linkFile) страницы или в футере (Resources::linkFileFooter). Для CSS как правило используется заголовок, для JS зависит отзадач (может быть заголовок/футер/или прямо в код), см.ниже;
2. есть ли необходимость и возможность объединять данный файл в один пул при включенном режиме консолидации: если скрипт предполагается к загрузке на всех страницах — он может быть консолидирован (объединен с остальными такими же скриптами в один файл для ускорения загрузки). В этом случае используем Resources::addFile, ф-я обеспечит нам (по возможности) консолидированную загрузку. Если мы не хотим включать файл в консолидацию (например он грузится не на всех страницах) — используем Resources::linkFile (причем ее особенности таковы, что она по возможности попытается воткнуть ваш файл в заголовок страницы, а если он уже сформирован, то отправит его в футер). Если мы хотим грузить файл принудительно в футере (в некоторых случаях это ускаряет отображение страницы), используем уже указанный ранее Resources::linkFileFooter.
3. отдельным видом и для специфических задач служат функции Resources::embed и Resources::embedFooter. Они вставляют указанный код в вашу страницу прямо в виде скрипта.

2 этап — выбрать в каком файле эти ф-и вызывать. Об этом я писал выше. Для большинства случаев достаточно (и рекомендуется) использовать файлы *.rc.php (в конкретном расширении или теме оформления).

3 этап — определить непосредственно условия подключения (т.е. вызова указанных выше функций), если скрипт должен подключаться только в определенном случае/на определенных страницах. Тут нет однозначных правил. Просто используем системные переменные для определения «где мы, и что мы». Например:

$env['ext']; // содержит название текущего расширения
$env['location']; // условное название раздела сайта

// примеры...
// для админки
$env['location'] = 'administration';
$env['ext'] = 'admin';

// для плагинов
$env['location'] = 'plugins';

//для любых расширений
$env['ext'] = 'имя_расширения';

//страница логина
$env['location'] = 'users';
$env['ext'] = 'users';

// для главной страницы
$env['location'] = 'home';
$env['ext'] = 'index';

Кроме этого никто не мешает использовать переменные определенные в расширениях, как это было показано выше в примере для определения id страницы или ее псевдонима(альяса).

 

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F

Dieser Beitrag wurde von Macik (am 3. Oktober 2016, 23:33, vor 7 Jahre) bearbeitet