simpleFilters 1.3.0: ЧПУ для страниц фильтрации

Всем привет!

В simpleFilters появилась возможность настройки ЧПУ для страниц фильтрации.
Теперь после установки/обновления в меню появится приложение 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) и псевдонимы:

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

Задача

Создать ЧПУ для страниц фильтрации по этим параметрам, чтобы адрес имел вид:
  • Для цвета: site.ru/bicycles/color/выбранный_цвет
  • Для производителя: 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 так:



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

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


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



В коде страницы:



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

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

<?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
$sf = $modx->getService('Simplefilters');
$sf->updateSeoPages();
Павел Романов
Сегодня в 10:51
modx.pro
45
+3

Комментарии: 2

Сергей Карпович
7 часов назад
0
Спасибо за примеры, очень сильно облегчают рабту
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
2