Здравствуйте, подскажите пожалуйста, у меня есть свой модуль, и мне в нём надо написать код (который проверяет наличие get параметра "meril", и если он есть, то записать его значение в куку) который будет работать на всех страницах сайта
Записать значение в куки на любой странице
Главные вкладки
Лучший ответ
2
Вот здесь https://www.drupal.org/node/2013014 есть пример, как использовать свой сервис вместо hook_init(). И там как раз по событию KernelEvents::REQUEST проверяется GET параметр.
Комментарии
А почему не в сессии Друпала?
Мне надо,чтобы он хранился 30 дней.
Вопрос в том где это прописать? Есть ли какой-то hook, который сработает на всех страницах сайта?
hook_preprocess_HOOK в общем случае и hook_preprocess_page в частности для нод
Это в файле mymodule.theme? Или mymodule.module?
Кстати, да.
Его использование это правильный способ?
Это просто один из подходящих способов.
Тут единственный вопрос: к чему прицепиться на препроцессе. Выше справедливо отметили, что не каждая страница является нодой. Следовательно, нужно выбрать препроцесс для такого объекта/элемента, который бы присутствовал на каждой странице.
Могу предложить рассмотреть вариант с
hook_preprocess_menu
- меню обычно грузится на каждой странице в типичном случае. Ну, может за исключением режима обслуживания.PS. В случае с
hook_preprocess_menu
можно код разместить и в mymodule.theme.В D7 был hook_init
В D8, видимо, уместнее решать через какой-нить service
Либо (как костыль) попробовать hook_entity_view - практически на каждой странице грузятся те или сущности.
А что за service? Мне желательно, чтобы было правильно
Вот здесь https://www.drupal.org/node/2013014 есть пример, как использовать свой сервис вместо hook_init(). И там как раз по событию KernelEvents::REQUEST проверяется GET параметр.
Плюсанул.