Где хранить id, который требуется в сниппетах
Перед загрузкой страницы требуется определить региональный контекст, который будет неоднократно использоваться в сниппетах для правильного построения меню, перенаправлений и вывода региональной информации.
Решил реализовать это в виде плагина, который срабатывает до обработки шаблона когда контекст текущей страницы уже доступен. Плагин будет определять правильный регион (по кукам, текущему контексту и geoip) и сохранять его context_key в чанке, который затем будет использоваться сниппетами.
Подскажите, на какое событие нужно вешать плагин и есть ли альтернативные, более правильные варианты реализации?
Решил реализовать это в виде плагина, который срабатывает до обработки шаблона когда контекст текущей страницы уже доступен. Плагин будет определять правильный регион (по кукам, текущему контексту и geoip) и сохранять его context_key в чанке, который затем будет использоваться сниппетами.
Подскажите, на какое событие нужно вешать плагин и есть ли альтернативные, более правильные варианты реализации?
Комментарии: 8
Стоп. Чанк не подходит для хранения информации о пользователе, при условии, что интерфейс многопользовательский. Нужен какой-то объект, который будет доступен из сниппета, в который можно положить context_key. Есть такое в MODX?
Как передать параметр из плагина в несколько сниппетов?
Задать константу в плагине не получается…
1) хранить в куках
2) хранить в настройках контекста
там уже от ваших более конкретных задач
2) хранить в настройках контекста
там уже от ваших более конкретных задач
Для этих целей используются плейсхолдеры
$modx->setPlaceholder('region', $value);
И в любом месте на странице можно использовать: [[!+region]] — для каждого пользователя будет свой.
Спасибо за ответ! Регион итак хранится в куках, но когда кука ещё не выставлена, чтобы избежать многократного определения региона и выставления кук, вынес эту проверку в плагин. В итоге мне помог ваш вариант с плейсхолдером:
В плагине:
В плагине:
$key = $modx->setPlaceholder('region_key', $key);
В сниппете:$key = $modx->getPlaceholder('region_key');
Не понимаю, зачем эти пляски с плейсходерами. В плагине определяете регион (по куке или по ip) и переключаете контекст.
А причем здесь переключение контекстов? Основные разделы сайта региононезависимы. Мне нужно, находясь в контексте web, правильно ставить ссылки на нужный региональный раздел, расположенный на отдельном контексте, и подтягивать подтягивать региональные блоки конкретного региона.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.