Foren / National / Russian / Тех. поддержка / Siena: Hooks=rc (вопросы)

Как сделать проверку в файле plug.rc.php

Macik
#1 25. November 2011, 21:58

Запутался немного.

Суть: как сделать проверку в "Hooks=rc" файле на предмет в каком разделе сайта находится пользователь (т.е. какую страницу пользователь запросил)?

Вопрос 2: где-то виде на сайте карту Хуков (т.е. список в том порядке в каком хуки срабатывают в скрирте). Если такое было - дайте ссылку.

Спасибо.

 

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Trustmaster
#2 26. November 2011, 08:45

1) Файлы с Hooks=rc в случае ипользования консолидатора вызываются только при обновлении кеша, поэтому нет смысла проверять, на какой странице это происходит. Если консолидация не должна использоваться и действительно очень нужно определить текущую страницу, то помогут переменные окружения $env['ext'], $c, $al, $_GET, $_SERVER.

2) Это в статье про хуки, раздел 2.1. Пока присутствует только в текущем срезе на github'е, будет включено в 0.9.6.

May the Source be with you!
Macik
#3 26. November 2011, 20:59

Спасибо.

1. Консолидация отключена.  На сколько понимаю на этапе вызова (подключения) модулей с hook=rc переменные $env['ext'], $c, $al еще не определены, т.к. вызов происходит из common.php, а он в свою очередь (почти) везде подключен в самом начале.

Практический пример зачем это нужно. Абстрактный сайт. На страницах раздела "товары" отображается слайдер товаров (например jQuery NivoSlider, хотя не принципиально их десятки вариантов). Задача подключать ресурсы:

  • custom-nivo-slider.css
  • nivo-slider.css
  • nivo.slider.pack.js

только на страницах раздела товары.

Пользователю пришедшему на главную страницу или страницы новостей совсем необязательно тянуть "лишние" для него файлы модулей, которые не используются на данной старанице.

Понятно, что есть кэширование ресурсов, и кэш браузера.

Однако практика диктует свои условия. У меня на реальном проекте ситуация приобретает плачевный характер: подключено несколько самописных плагинов, которые реализуют различную специфическую для сайта функциональность. Каждый из плагинов в зависимости от назначения использует 1-2 подключаемых JS файла и файлы стилей. В этоге имеем внушительный список из более десятка JS файлов и пары десятков CSS. Что на прямую сказывается не только на скорости загрузки сраницы, но и на ресурсах потребяемых браузером при просмотре сайта. Хотя единомоментно необходимы 2-4 файла.

Вопрос собственно в том, на сколько алгоритмически обоснована загрузка ресурсов в самом начале скрипта?

И есть ли возможность перенести вызов функции подключения ресурсов хотябы в секцию обработки Header, когда уже инициализирована часть переменных ($env['location'], $env['ext'], $c, $al и т.п. ) и есть возможность сделать выборочную загрузку ресурсов?

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Trustmaster
#4 27. November 2011, 07:48

В таком случае рациональнее использовать функцию cot_rc_link_file() до отправки header'а или cot_rc_link_footer() для вставки в footer.

Но вообще поскольку суть задачи заключается в уменьшении количества запросов и загружаемых JS/CSS файлов, то стоит задуматься о консолидации. Суть её в том, что все JS или CSS файлы будут объединены в один. Он будет большим и будет подключаться везде, но во-первых он будет "minified & gzipped", а во-вторых он будет закеширован браузером. То есть несмотря на казалось бы возросший объём скриптов, подключаемых на страницу, реальный трафик гораздо меньше.

Единственные случаи, когда я сам обычно избегаю консолидации - это: 1) когда скрипт вообще не работает после консолидации, например CKEditor; 2) когда скрипт меняется от запроса к запросу, то есть генерируется каждый раз с помощью PHP; 3) когда он необходим только на очень редко открываемой странице или в админке.

May the Source be with you!
Macik
#5 29. November 2011, 12:45

Понял. Попробую cot_rc_link_file().

Кстати попробовал консолидацию. Включил. Не заработало:

1. Словил кучу предупреждений, т.к. оказалось что каталог "datas/cache/static/" не создан. Отсюда вопрос каким модулем и когда он создается. Только при инсталяции? Может имеет смысл включить создание каталога в процедуру "включения" опции консолидации в админке. Каталог создал руками.

2. Ресурсы не подгружаються в виду того, что адрес http://localhost/site/rc.php?rc=global.css  не найден.  Проверил по прямой ссылке - получил:  HTTP 404 - Not Found. Как мне кажется это перекликается с этой темой: http://www.cotonti.com/forums/31268?m=posts .  Далее в консолидации не разбирался. Пока буду использовать cot_rc_link_file().

 

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