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


SEO шаблоны генерируют уникальные метаданные для страниц фильтрации.
Для каждой комбинации фильтров можно настроить:
| Столбец | Описание |
|---|---|
| Название | Идентификатор шаблона |
| Title | Шаблон тега title |
| H1 | Шаблон заголовка |
| Условия | Когда применяется |
| Активен | Включён/выключен |
| Порядок | Приоритет |
| Поле | Описание |
|---|---|
| Название | Для идентификации в админке |
| Title | Шаблон тега <title> |
| H1 | Шаблон заголовка <h1> |
| Description | Шаблон мета-описания |
| Текст | SEO-текст для страницы |
| Условия | JSON с правилами применения |
| Активен | Использовать ли шаблон |
| Порядок | Приоритет (меньше = выше) |
Условия определяют, когда шаблон будет использован:
{
"filters": {
"vendor": ["apple"],
"color": ["*"]
},
"resources": [5, 10]
}| Условие | Описание |
|---|---|
["value1", "value2"] | Точное совпадение значений |
["*"] | Любое значение фильтра |
[] или отсутствие | Фильтр не выбран |
{
"filters": {
"vendor": ["apple"]
}
}{
"filters": {
"vendor": ["apple"],
"color": ["*"]
}
}{
"filters": {
"vendor": ["*"]
},
"resources": [5]
}| Плейсхолдер | Описание |
|---|---|
{$filters.vendor} | Выбранный производитель |
{$filters.color} | Выбранный цвет |
{$filters.price.min} | Минимальная цена |
{$filters.price.max} | Максимальная цена |
| Плейсхолдер | Описание |
|---|---|
{$resource.pagetitle} | Название страницы |
{$resource.longtitle} | Расширенный заголовок |
{$resource.description} | Описание |
{$resource.id} | ID ресурса |
| Плейсхолдер | Описание |
|---|---|
{$total} | Количество найденных товаров |
{$page} | Текущая страница |
| Плейсхолдер | Описание |
|---|---|
{$filters.vendor|genitive} | Родительный падеж |
{$filters.vendor|dative} | Дательный падеж |
{$filters.vendor|accusative} | Винительный падеж |
{$filters.vendor|instrumental} | Творительный падеж |
{$filters.vendor|prepositional} | Предложный падеж |
{$filters.vendor|plural} | Множественное число |
Условия:
{"filters": {"vendor": ["*"]}}Title:
{$filters.vendor} — купить в Москве | {$resource.pagetitle}H1:
{$filters.vendor}Description:
Купить {$filters.vendor|accusative} в интернет-магазине. {$total} товаров в наличии. Доставка по России.Условия:
{"filters": {"vendor": ["*"], "color": ["*"]}}Title:
{$filters.vendor} {$filters.color} — купить | {$resource.pagetitle}H1:
{$filters.vendor} {$filters.color|nominative}Условия:
{"filters": {"price": ["*"]}}Title:
{$resource.pagetitle} от {$filters.price.min} до {$filters.price.max} руб.Условия:
{"filters": {"vendor": ["apple"]}}Title:
Техника Apple — купить в МосквеТекст:
<p>В нашем магазине представлен полный ассортимент техники Apple:
iPhone, iPad, MacBook и аксессуары.</p>
<p>Мы являемся официальным реселлером и предоставляем
гарантию производителя на все товары.</p>Рекомендуемый порядок:
Добавьте в условия noindex: true:
{
"filters": {
"vendor": ["*"],
"color": ["*"],
"size": ["*"]
},
"noindex": true
}По умолчанию canonical указывает на страницу без фильтров. Можно переопределить в шаблоне.
$mfilter = $modx->services->get('mfilter');
$seoBuilder = $mfilter->getSeoBuilder();
$seoData = $seoBuilder->build($resourceId, $filters);
// [
// 'title' => 'Apple — купить в Москве',
// 'h1' => 'Apple',
// 'description' => 'Купить Apple в интернет-магазине...',
// 'text' => '<p>SEO текст...</p>',
// 'canonical' => '/catalog/',
// 'noindex' => false
// ]{if $mfilter.seo.title}
<title>{$mfilter.seo.title}</title>
{/if}
{if $mfilter.seo.h1}
<h1>{$mfilter.seo.h1}</h1>
{/if}
{if $mfilter.seo.description}
<meta name="description" content="{$mfilter.seo.description}">
{/if}
{if $mfilter.seo.noindex}
<meta name="robots" content="noindex, follow">
{/if}
{if $mfilter.seo.text}
<div class="seo-text">{$mfilter.seo.text}</div>
{/if}