Где хранить id, который требуется в сниппетах Новый


Перед загрузкой страницы требуется определить региональный контекст, который будет неоднократно использоваться в сниппетах для правильного построения меню, перенаправлений и вывода региональной информации.
Решил реализовать это в виде плагина, который срабатывает до обработки шаблона когда контекст текущей страницы уже доступен. Плагин будет определять правильный регион (по кукам, текущему контексту и geoip) и сохранять его context_key в чанке, который затем будет использоваться сниппетами.

Подскажите, на какое событие нужно вешать плагин и есть ли альтернативные, более правильные варианты реализации?
07 августа 2016, 16:58    Алексей   
1    308 0

Комментарии (8)

  1. Алексей 07 августа 2016, 17:31 # 0
    Стоп. Чанк не подходит для хранения информации о пользователе, при условии, что интерфейс многопользовательский. Нужен какой-то объект, который будет доступен из сниппета, в который можно положить context_key. Есть такое в MODX?
    1. Алексей 07 августа 2016, 17:35 # 0
      Как передать параметр из плагина в несколько сниппетов?
      1. Алексей 07 августа 2016, 17:51 # 0
        Задать константу в плагине не получается…
        1. Евгений Webinmd 07 августа 2016, 20:24 # 0
          1) хранить в куках
          2) хранить в настройках контекста
          там уже от ваших более конкретных задач
          1. Илья Уткин 07 августа 2016, 20:57 # +3
            Для этих целей используются плейсхолдеры
            $modx->setPlaceholder('region', $value);
            И в любом месте на странице можно использовать: [[!+region]] — для каждого пользователя будет свой.
            1. Алексей 08 августа 2016, 11:05 # 0
              Спасибо за ответ! Регион итак хранится в куках, но когда кука ещё не выставлена, чтобы избежать многократного определения региона и выставления кук, вынес эту проверку в плагин. В итоге мне помог ваш вариант с плейсхолдером:
              В плагине:
              $key = $modx->setPlaceholder('region_key', $key);
              В сниппете:
              $key = $modx->getPlaceholder('region_key');
              
            2. Сергей Шлоков 08 августа 2016, 11:30 # +1
              Не понимаю, зачем эти пляски с плейсходерами. В плагине определяете регион (по куке или по ip) и переключаете контекст.
              1. Алексей 08 августа 2016, 11:45 # 0
                А причем здесь переключение контекстов? Основные разделы сайта региононезависимы. Мне нужно, находясь в контексте web, правильно ставить ссылки на нужный региональный раздел, расположенный на отдельном контексте, и подтягивать подтягивать региональные блоки конкретного региона.
              Вы должны авторизоваться, чтобы оставлять комментарии.