Собственная маршрутизация, плейсхолдеры и mFilter2. Нужна помощь.

Решил настроить маршрутизацию на собственные страницы по инструкции Василия bezumkin.ru/sections/tips_and_tricks/2918/. Делаю все как в инструкции. В плагине задаю нужный мне плейсхолдер:

$modx->setPlaceholder('example', 'Пример');
Все хорошо работает и этот плейсхолдер отображается на «виртуальной» странице при загрузке.

На этой «виртуальной» странице вызывается mFilter2. В чанке вывода &tpl для mFilter2 я также вызываю этот плейсхолдер некешированным. При загрузке страницы он отображается для каждого ресурса в результатах фильтрации. Все как нужно.

Но как только я начинаю менять фильтры, фильтр отрабатывает, но этот плейсхолдер пропадает…
И сниппет mFilter2 и плейсхолдер я вызываю некешированными.

Подскажите, как мне корректно передать виртуальный плейсхолдер в чанк вывода mfilter2 чтобы он не сбрасывался при фильтрации?
Иван Бондаренко
08 января 2019, 12:14
modx.pro
1
1 378
0

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

Андрей
09 января 2019, 10:07
2
+1
Передавайте значение этого плейсхолдера в вызов mFilter2.

У mfilter есть параметр prepareSnippet, в нем указывается сниппет который будет обрабатывать результаты выборки.

код сниппета
$item = array_merge(
  (array) $row,
  array(
    'customData' => $modx->getOption('customData', $scriptProperties, '')
  )
);

return json_encode($item);

Теперь в вызове mfilter добавьте данные из плейсхолдера
'prepareSnippet' => 'название_сниппета',
'customData' => [
    'example' => $_modx->getPlaceholder('example')
]

Теперь в чанке c товаром будет доступен плейсхолдер {$customData.example}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
2