
Индивидуальные SEO
Вкладка задаёт title, h1, description и текст для конкретной подборки — например, для страницы одного цвета, а не для всех значений фильтра «Цвет».
SEO-шаблоны закрывают массу автоматически. Индивидуальные записи нужны там, где под страницу написали текст руками и шаблонная формулировка её портит.
Как это устроено
Записи не создаются заранее. Страница каталога с одним фильтром и сорока значениями даёт сорок адресов, а с двумя — сотни; заводить под них пустые строки означало бы засорить базу записями, которые никто не заполнит.
Поэтому список подборок виртуальный: он строится из фильтров страницы при каждом открытии вкладки. Строка попадает в базу только при первом сохранении. Если очистить все поля и сохранить, запись удаляется — пустая строка не хранится.
Список
Сначала выбирается страница каталога. В выпадающем списке только те страницы, которые покрыты набором фильтров, — на остальных подборок нет по определению. Рядом с названием показано, сколько записей уже заполнено.
| Фильтр | Назначение |
|---|---|
| Свойство | Показать подборки по одному фильтру — «Цвет», «Материал» |
| Все / Заполненные / Пустые | Заполненные — рабочий режим, когда нужно найти написанное |
| Поиск по значению | Найти подборку среди десятков значений |
Перечисляются подборки по одному значению одного фильтра — именно под такие страницы пишут тексты.
Не перечисляются:
- диапазоны (цена, площадь) — между границами адресов бесконечно много, выбирать из списка нечего;
- сочетания нескольких значений (
цвет=красный,синий) и нескольких фильтров — их число растёт мультипликативно.
Записи для них возможны и работают, но заводятся не из этого списка.
Редактор
Четыре поля: H1, Title, Description, Текст.
Пустое поле берётся из SEO-шаблона. Это главное правило: чтобы поменять только заголовок, заполняется один H1, остальное продолжает приходить из шаблона. При правке шаблона такие страницы обновятся вместе со всеми.
Поля поддерживают те же плейсхолдеры, что и шаблоны, включая падежи через словоформы:
{$pagetitle} — название страницы
{$color}, {$color.gen} — значение фильтра и его падежи
{$site_name} — название сайтаИндексация
Запись снимает noindex, навешенный настройками mfilter.seo_max_filters и mfilter.seo_max_values: они закрывают длинный хвост машинных комбинаций, а страница, под которую человек написал текст, к этому хвосту не относится.
На практике это касается записей для сочетаний нескольких значений — подборку по одному значению эти настройки и так не закрывают, поэтому на страницах из списка снимать нечего.
Настройка mfilter.seo_noindex_filtered — исключение: она закрывает все фильтрованные страницы осознанно и по всему сайту, и запись её не отменяет.
Вместе с noindex восстанавливается и canonical: он снова указывает на саму отфильтрованную страницу, а не на раздел без фильтров.
Вывод на сайт
Значения приходят в те же плейсхолдеры, что и у шаблонов, — см. Плейсхолдеры:
<h1 data-mfilter-h1>{$_pls['mfilter.seo.h1'] ?: $_modx->resource.pagetitle}</h1>
<div data-mfilter-seo-text{if !$_pls['mfilter.seo.text']} style="display:none"{/if}>
{$_pls['mfilter.seo.text']}
</div>Без маркеров текст не обновится при фильтрации
Атрибуты data-mfilter-h1 и data-mfilter-seo-text (или классы mfilter-h1 / mfilter-seo-text) обязательны: по ним JS находит элементы при AJAX-фильтрации. Без них значения обновятся только после перезагрузки страницы.
Привязка к значению, а не к URL
Запись связана с значением фильтра, а не с адресом страницы. Поэтому переименование слага во вкладке Алиасы, смена настройки mfilter.url_separator или режима mfilter.slug_parent_prefix не отвязывают текст от подборки — адрес меняется, запись продолжает работать.
Порядок значений не важен: цвет=красный,синий и цвет=синий,красный — одна и та же подборка и одна запись.
Комбинация исчезла
Если значения нет среди текущих подборок, запись помечается «значения нет в списке» и приглушается. Причин три: значение убрали из каталога, переименовали, или у него сейчас нет товаров в наличии — при hide_zero такие значения из списка выпадают.
Запись при этом продолжает работать. Пометка говорит только о том, что подборки нет в списке; если комбинация вернётся, текст выведется. Автоматически такие записи не удаляются: текст писали руками, он дороже строки в базе.
Записи для сочетаний нескольких значений помечаются отдельно — «несколько значений». Они не сироты, просто не перечисляются.
Приоритет
При отрисовке страницы значения складываются в таком порядке:
- Индивидуальная запись — если она есть и активна, её заполненные поля побеждают
- SEO-шаблон — подходящий по ключам фильтров, с учётом поля «Порядок»
- Значения по умолчанию — название страницы плюс перечисление выбранных фильтров
Каждое поле проходит эту цепочку самостоятельно.
