Вызов mFilter2 с параметром &toSeparatePlaceh
Добрый вечер!
Столкнулся со странной работой компонента mSearch2. В частности mFilter2.
Попробовал смоделировать ситуацию на тестовом сайте s6088.test.modx.pro/
Суть такова: При использовании параметра &toSeparatePlaceholders в вызове mFilter2 пропадает выдача результатов.на примере категория 3
Код вызова mFilter2 с параметром &toSeparatePlaceholders
Код вызова mFilter2 в стандартном варианте:
Код вызова mFilter2 с параметром &toPlaceholders
Столкнулся со странной работой компонента mSearch2. В частности mFilter2.
Попробовал смоделировать ситуацию на тестовом сайте s6088.test.modx.pro/
Суть такова: При использовании параметра &toSeparatePlaceholders в вызове mFilter2 пропадает выдача результатов.на примере категория 3
Код вызова mFilter2 с параметром &toSeparatePlaceholders
[[!mFilter2?
&paginator=`pdoPage`
&parents=`4`
&hideContainers=`1`
&element=`msProducts`
&toSeparatePlaceholders =`sep.`
&filters=`
ms|weight
,ms|price:number
,ms|made_in
`
&showLog=`1`
&tplFilter.outer.ms|price=`tpl.mFilter2.filter.slider`
&tplFilter.row.ms|price=`tpl.mFilter2.filter.number`
]]
[[$tpl.mFilter2.outer.sep]]
Фильтры выводятся так[[+sep.ms|price:number]]
<p>Фильтр веса</p>
[[+sep.ms|weight]]
<p>Фильтр страны</p>
[[+sep.ms|made_in]]
Результат так [[+sep.results]]
Для наглядности стандартный вывод mFilter2: на примере категория 2Код вызова mFilter2 в стандартном варианте:
[[!mFilter2?
&paginator=`pdoPage`
&parents=`4`
&hideContainers=`1`
&element=`msProducts`
&filters=`
ms|weight
,ms|price:number
,ms|made_in
`
&showLog=`1`
&tplFilter.outer.ms|price=`tpl.mFilter2.filter.slider`
&tplFilter.row.ms|price=`tpl.mFilter2.filter.number`
]]
И вывод mFilter2 c параметром &toPlaceholders: на примере категория 4Код вызова mFilter2 с параметром &toPlaceholders
[[!mFilter2?
&paginator=`pdoPage`
&parents=`4`
&hideContainers=`1`
&element=`msProducts`
&toPlaceholders =`my.`
&filters=`
ms|weight
,ms|price:number
,ms|made_in
`
&showLog=`1`
&tplFilter.outer.ms|price=`tpl.mFilter2.filter.slider`
&tplFilter.row.ms|price=`tpl.mFilter2.filter.number`
]]
[[$tpl.mFilter2.outer.my]]
Фильтры выводятся так[[+my.filters]]
Результат так [[+my.results]]
Ни кто не сталкивался с похожей ситуацией? Комментарии: 8
Параметр toSeparatePlaceholders принимает и сниппет, который выводит результаты. Так что, нужно и выдачу также расфасовать по странице:
Исходник pdoResources, для примера.
[[+sep.0]] [[+sep.1]]
Исходник pdoResources, для примера.
да, подставив в выдачу [[+sep.0]] получилось вывести 1 товар. А как тогда вывести список товаров?
Судя по всему своим самописным снипетом?
Судя по всему своим самописным снипетом?
Просто закомментируй в используемом сниппете обработку этого параметра — где искать я уже показал.
В будущих версиях постараюсь учесть.
В будущих версиях постараюсь учесть.
С закомментированием данного куска кода не получается (может не совсем то комментирую).
А нельзя как-то вывести [[+sep.0]] [[+sep.1]] в цикле? Общее количество [[+sep.total]] известно
А нельзя как-то вывести [[+sep.0]] [[+sep.1]] в цикле? Общее количество [[+sep.total]] известно
Не знаю, не пробовал.
Василий, и еще не совсем понимаю, почему перестают выводится правильные подписи на странице с включенными параметрами &toPlasholders и &toSeparatePlasholders?
Вот например выводится «mse2_filter_total» вместо «Всего результатов».
s6088.test.modx.pro/index.php?id=11
Вроде в лексиконах эти слова прописаны
Вот например выводится «mse2_filter_total» вместо «Всего результатов».
s6088.test.modx.pro/index.php?id=11
Вроде в лексиконах эти слова прописаны
Наверное потому, что плейсхолдеры с лексиконами кэшированные и обрабатываются раньше некэшированного mFilter2. То есть, MODX их обрабатывает до того, как загружен словарь.
А вот когда mFilter2 сам рендерит чанк — лексикон уже в наличии и все выводится правильно. Или вызывай лексиконовые плейсхолдеры некэшированными, или вообще их не используй, просто пропиши готовые слова в шаблоне.
А вот когда mFilter2 сам рендерит чанк — лексикон уже в наличии и все выводится правильно. Или вызывай лексиконовые плейсхолдеры некэшированными, или вообще их не используй, просто пропиши готовые слова в шаблоне.
Некешированный вызов лексиконов помогает)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.