Skip to content
  1. Компоненты
  2. simpleFilters
  3. SEO-страницы

Начиная с версии 1.3.0 поддерживается настройка SEO-страниц с ЧПУ. После установки в меню появится приложение sfSeoPages.

Для корректной работы требуются следующие системные настройки:

  • sf_seopages_aliases - Алиасы фильтров для формирования SEO-страниц.
  • sf_seopages_ids - ID страниц для SEO-ссылок (отдельные страницы).
  • sf_seopages_tpls - ID шаблонов страниц для SEO-ссылок (например, категория товаров).

Для вывода значений в шаблоне должны присутствовать следующие плейсхолдеры:

[[!+sf_seo_title]]
[[!+sf_seo_description]]
[[!+sf_seo_h1]]
[[!+sf_seo_breadcrumb]]

Для динамического изменения значений без перезагрузки страницы для H1 и хлебных крошек укажите следующие классы:
sf_seo_h1 - для заголовка H1
sf_seo_breadcrumb - для текущего пункта меню

Пример

На сайте есть каталог продукции, все категории которого имеют шаблон "Категория" с ID=4.
В вызове simpleFilters указана фильтрация по цвету (ms_color), производителю (ms_vendor_id) и алиасы:

modx
[[!simpleFilters?
  &filters=`ms_color,ms_vendor_id`
  &aliases=`ms_color==color,ms_vendor_id==brand`
  ...
]]

Задача

Создать страницы для фильтрации по этим параметрам, чтобы адрес имел вид:

  • Для цвета: https://site.ru/bicycles/color/выбранный_цвет
  • Для производителя: https://site.ru/bicycles/выбранный_производитель

Решение

В системных настройках указываем:

  • sf_seopages_aliases : {"ms_color":"color","ms_vendor_id":"brand"}
  • sf_seopages_tpls: 4

Добавляем в HEAD плейсхолдеры [[!+sf_seo_title]] и [[!+sf_seo_description]] с указанием значений по умолчанию:

<title>[[!+sf_seo_title:default=`[[*pagetitle]]`]]</title>
<meta name="description" content="[[!+sf_seo_description:default=`[[*description]]`]]">

Добавляем в шаблон плейсхолдер и класс на тег H1:

<h1 class="sf_seo_h1">[[!+sf_seo_h1:default=`[[*pagetitle]]`]]</h1>

В pdoCrumbs в &tplCurrent указываем чанк sf_breadcrumb_current_tpl (идет в комплекте)...

[[pdoCrumbs?
	&tplCurrent=`sf_breadcrumb_current_tpl`
	...
]]

...или в своем чанке ставим соответствующий прлейсхолдер и класс:

<li class="active sf_seo_breadcrumb">
    [[!+sf_seo_breadcrumb:default=`[[+menutitle]]`]]
</li>

Далее в приложении sfSeoPages для цвета "красный" добавляем запись вида:

В SEO-параметрах допускаются все плейсхолдеры ресурса-категории (pagetitle, longtitle, description и т. д.).

Склонения значений указывайте через разделитель ||.
Их можно выводить в том числе и просто на странице через плейсхолдеры вида:
[[+sf_seo_w1]] [[+sf_seo_w2]] ... [[+sf_seo_w6]] - они выведут, соответственно, красный красного и о красном в том порядке, в котором прописаны.

Для производителя Trek так:

Аналогично добавляются записи для всех значений цветов и производителей.

Теперь при заходе на страницу https://site.ru/bicycles/color/red или выборе фильтра будут выведены соответствующие позиции, а H1 TITLE, DESCRIPTION и хлебные крошки примут соответствующий вид:

Производитель по адресу https://site.ru/bicycles/trek

Добавление в sitemap.xml

Для добавления SEO-страниц в sitemap.xml используйте сниппет simpleFiltersSiteMap.
Пример использования с pdoSitemap:

xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  {'pdoSitemap' | snippet : [
    'forceXML' => 0
  ]}
  {'simpleFiltersSiteMap' | snippet : [
    'tpl' => 'sf_sitemap_tpl'
  ]}
</urlset>

Автоматизация

При сохранениии ресурса с шаблоном, ID которого указан в системной настройке sf_index_templates, система проверяет его значения для параметров, указанных в настройке sf_seopages_aliases и если присутствует новое, автоматически создаёт для него SEO-страницу, заполняя обязательные поля Фильтр, Значение и URI.
Механизм работает только с индексной таблицей, поэтому записи для товаров там должны присутствовать.

Для пакетного создания SEO-страниц на основе уже существующих ресурсов можно использовать консольный скрипт:

php
<?php
$sf = $modx->getService('Simplefilters');
$sf->updateSeoPages();