Записать значение в куки на любой странице

Аватар пользователя Artalek Artalek 15 января в 14:59

Здравствуйте, подскажите пожалуйста, у меня есть свой модуль, и мне в нём надо написать код (который проверяет наличие get параметра "meril", и если он есть, то записать его значение в куку) который будет работать на всех страницах сайта

Лучший ответ

Аватар пользователя charOFF charOFF 15 января в 19:19
2

Вот здесь https://www.drupal.org/node/2013014 есть пример, как использовать свой сервис вместо hook_init(). И там как раз по событию KernelEvents::REQUEST проверяется GET параметр.

Комментарии

Аватар пользователя Artalek Artalek 15 января в 17:54

Мне надо,чтобы он хранился 30 дней.
Вопрос в том где это прописать? Есть ли какой-то hook, который сработает на всех страницах сайта?

Аватар пользователя OldWarrior OldWarrior 15 января в 18:28

Это просто один из подходящих способов.
Тут единственный вопрос: к чему прицепиться на препроцессе. Выше справедливо отметили, что не каждая страница является нодой. Следовательно, нужно выбрать препроцесс для такого объекта/элемента, который бы присутствовал на каждой странице.

Могу предложить рассмотреть вариант с hook_preprocess_menu - меню обычно грузится на каждой странице в типичном случае. Ну, может за исключением режима обслуживания.

PS. В случае с hook_preprocess_menu можно код разместить и в mymodule.theme.

Аватар пользователя OldWarrior OldWarrior 15 января в 18:01
1

В D7 был hook_init

В D8, видимо, уместнее решать через какой-нить service
Либо (как костыль) попробовать hook_entity_view - практически на каждой странице грузятся те или сущности.