
mFilter
Фасетная фильтрация для MODX 3 с поддержкой SEO URL


mFilter предоставляет два основных сниппета для работы с фильтрацией.
| Сниппет | Назначение |
|---|---|
| mFilter | Вывод отфильтрованных результатов |
| mFilterForm | Рендеринг формы фильтров |
{* Форма фильтров в сайдбаре *}
<aside>
{'!mFilterForm' | snippet}
</aside>
{* Результаты фильтрации *}
<main>
{'!mFilter' | snippet : [
'element' => 'msProducts',
'paginator' => 'pdoPage',
'parents' => $_modx->resource.id,
'limit' => 24
]}
{$_modx->getPlaceholder('page.nav')}
</main>Делегирует получение и рендеринг данных внешним сниппетам:
{'!mFilter' | snippet : [
'element' => 'msProducts', {* Сниппет для данных *}
'paginator' => 'pdoPage', {* Сниппет для пагинации *}
'parents' => 5,
'limit' => 24,
'tpl' => 'mfilter.row'
]}Как это работает:
element с returnIds=1paginatorpaginator вызывает element для рендерингаmFilter сам выполняет запросы и рендеринг (без внешних сниппетов):
{'!mFilter' | snippet : [
'parents' => 5,
'limit' => 24,
'tpl' => 'product.row',
'class' => 'msProduct'
]}Используется когда нужен полный контроль над запросом.
Оба сниппета поддерживают AJAX-обновление без перезагрузки страницы.
По умолчанию включён. Форма отправляется через JavaScript, результаты обновляются динамически.
{'!mFilterForm' | snippet : ['ajax' => 0]}
{'!mFilter' | snippet : ['ajax' => 0]}| Режим | Описание |
|---|---|
form | Отправка по нажатию кнопки |
instant | Отправка при изменении любого фильтра |
{'!mFilterForm' | snippet : ['ajaxMode' => 'instant']}