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


Интеграция mFilter с MiniShop3 — полнофункциональная фильтрация товаров.
[[!mFilterForm]]
[[!mFilter?
&element=`msProducts`
&paginator=`pdoPage`
&parents=`5`
&limit=`24`
&tpl=`tpl.msProducts.row`
&includeThumbs=`small,medium`
]]Создайте набор в админке с типичными фильтрами MS3:
{
"vendor": {
"type": "vendors",
"source": "ms3",
"label": "Производитель"
},
"price": {
"type": "number",
"source": "resource",
"field": "Data.price",
"label": "Цена"
},
"color": {
"type": "colors",
"source": "option",
"field": "color",
"label": "Цвет"
},
"size": {
"type": "default",
"source": "option",
"field": "size",
"label": "Размер"
},
"new": {
"type": "boolean",
"source": "resource",
"field": "Data.new",
"label": "Новинка"
},
"popular": {
"type": "boolean",
"source": "resource",
"field": "Data.popular",
"label": "Популярное"
}
}| Поле | Описание |
|---|---|
Data.price | Цена |
Data.old_price | Старая цена |
Data.weight | Вес |
Data.article | Артикул |
Data.new | Новинка (1/0) |
Data.popular | Популярное (1/0) |
Data.favorite | Избранное (1/0) |
{
"vendor": {
"type": "vendors",
"source": "ms3",
"label": "Производитель"
}
}Автоматически получает список производителей из ms3_vendors.
{
"color": {
"type": "default",
"source": "option",
"field": "color",
"label": "Цвет"
}
}Получает значения из ms3_product_options.
{
"instock": {
"type": "boolean",
"source": "custom",
"label": "В наличии",
"condition": "Data.count > 0"
}
}{
"sale": {
"type": "boolean",
"source": "custom",
"label": "Со скидкой",
"condition": "Data.old_price > Data.price"
}
}{
"weight": {
"type": "number",
"source": "resource",
"field": "Data.weight",
"label": "Вес, г"
}
}[[!mFilter?
&element=`msProducts`
&sortby=`Data.price`
&sortdir=`ASC`
]]| Поле | Описание |
|---|---|
pagetitle | Название |
publishedon | Дата публикации |
Data.price | Цена |
Data.weight | Вес |
Data.article | Артикул |
<select data-mfilter-sort>
<option value="pagetitle-asc">По названию (А-Я)</option>
<option value="pagetitle-desc">По названию (Я-А)</option>
<option value="Data.price-asc">Сначала дешёвые</option>
<option value="Data.price-desc">Сначала дорогие</option>
<option value="publishedon-desc">Сначала новые</option>
</select>{* @FILE chunks/product.card.tpl *}
<div class="product-card" itemscope itemtype="http://schema.org/Product">
<a href="{$uri}" class="product-card__link">
{if $thumb.small}
<img src="{$thumb.small}" alt="{$pagetitle}" class="product-card__image">
{/if}
<h3 class="product-card__title" itemprop="name">{$pagetitle}</h3>
{if $vendor.name}
<div class="product-card__vendor">{$vendor.name}</div>
{/if}
</a>
<div class="product-card__price" itemprop="offers" itemscope itemtype="http://schema.org/Offer">
{if $old_price > $price}
<span class="product-card__old-price">{$old_price|number:0} ₽</span>
{/if}
<span class="product-card__current-price" itemprop="price" content="{$price}">
{$price|number:0} ₽
</span>
<meta itemprop="priceCurrency" content="RUB">
</div>
{if $new}
<span class="product-card__badge product-card__badge--new">Новинка</span>
{/if}
<form method="post" class="ms3-form">
<input type="hidden" name="id" value="{$id}">
<input type="hidden" name="count" value="1">
<button type="submit" name="ms3_action" value="cart/add">
В корзину
</button>
</form>
</div>Условия:
{"filters": {"vendor": ["*"]}}Title:
{$filters.vendor} — купить в интернет-магазине | {$site_name}H1:
{$filters.vendor}Description:
Купить {$filters.vendor|accusative} с доставкой по России.
{$total} товаров в каталоге. Гарантия качества.Условия (производитель + цвет):
{"filters": {"vendor": ["*"], "color": ["*"]}}Title:
{$filters.vendor} {$filters.color} — каталог товаровУбедитесь в наличии индексов:
-- Цена
ALTER TABLE modx_ms3_products ADD INDEX idx_price (Data->'$.price');
-- Производитель
ALTER TABLE modx_ms3_products ADD INDEX idx_vendor (vendor);
-- Опции
ALTER TABLE modx_ms3_product_options ADD INDEX idx_key_value (key, value(100));[[!mFilter?
&element=`msProducts`
&cache=`1`
&cacheTime=`3600`
]]