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

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

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

Комментарии: 8

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