Собственная маршрутизация, плейсхолдеры и mFilter2. Нужна помощь.
Решил настроить маршрутизацию на собственные страницы по инструкции Василия bezumkin.ru/sections/tips_and_tricks/2918/. Делаю все как в инструкции. В плагине задаю нужный мне плейсхолдер:
На этой «виртуальной» странице вызывается mFilter2. В чанке вывода &tpl для mFilter2 я также вызываю этот плейсхолдер некешированным. При загрузке страницы он отображается для каждого ресурса в результатах фильтрации. Все как нужно.
Но как только я начинаю менять фильтры, фильтр отрабатывает, но этот плейсхолдер пропадает…
И сниппет mFilter2 и плейсхолдер я вызываю некешированными.
Подскажите, как мне корректно передать виртуальный плейсхолдер в чанк вывода mfilter2 чтобы он не сбрасывался при фильтрации?
$modx->setPlaceholder('example', 'Пример');
Все хорошо работает и этот плейсхолдер отображается на «виртуальной» странице при загрузке. На этой «виртуальной» странице вызывается mFilter2. В чанке вывода &tpl для mFilter2 я также вызываю этот плейсхолдер некешированным. При загрузке страницы он отображается для каждого ресурса в результатах фильтрации. Все как нужно.
Но как только я начинаю менять фильтры, фильтр отрабатывает, но этот плейсхолдер пропадает…
И сниппет mFilter2 и плейсхолдер я вызываю некешированными.
Подскажите, как мне корректно передать виртуальный плейсхолдер в чанк вывода mfilter2 чтобы он не сбрасывался при фильтрации?
Комментарии: 2
Передавайте значение этого плейсхолдера в вызов mFilter2.
У mfilter есть параметр prepareSnippet, в нем указывается сниппет который будет обрабатывать результаты выборки.
код сниппета
Теперь в вызове mfilter добавьте данные из плейсхолдера
Теперь в чанке c товаром будет доступен плейсхолдер {$customData.example}
У 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}
Спасибо Вам за подсказку!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.