Skip to content
mFilter
mFilter
Фасетная фильтрация для MODX 3 с поддержкой SEO URL
  • MODX 3
  • PHP 8.1
  • Vue 3
  1. Компоненты
  2. mFilter
  3. Сниппеты
  4. mFilterSitemap

mFilterSitemap ​

Сниппет для генерации XML sitemap фильтрованных страниц.

Описание ​

mFilterSitemap создаёт XML карту сайта для виртуальных страниц фильтров (SEO URL). Работает по принципу sitemap index — генерирует только URL фильтров, которые можно добавить к основной карте сайта.

Особенности:

  • Автоматическое определение страниц с фильтрами
  • Ограничение комбинаций для предотвращения "комбинаторного взрыва"
  • Кэширование результатов
  • Поддержка одиночных и комбинированных фильтров
  • Интеграция с MODX Scheduler для автоматической генерации

Параметры ​

Источник данных ​

ПараметрПо умолчаниюОписание
parentsавтоID ресурсов (через запятую). Пусто = все страницы с наборами фильтров
filterKeysвсеКлючи фильтров для включения (через запятую)

Ограничения ​

ПараметрПо умолчаниюОписание
maxFilters1Максимум фильтров в одном URL (1 = только одиночные)
maxValues1Максимум значений на фильтр

SEO параметры ​

ПараметрПо умолчаниюОписание
priority0.7Приоритет URL (0.0-1.0)
changefreqweeklyЧастота обновления (always, hourly, daily, weekly, monthly, yearly, never)

Шаблоны ​

ПараметрПо умолчаниюОписание
tplвстроенныйШаблон одного URL
tplWrapperвстроенныйОбёртка urlset
sitemapSchemahttp://www.sitemaps.org/schemas/sitemap/0.9XML Schema

Вывод ​

ПараметрПо умолчаниюОписание
forceXMLtrueВывести XML заголовок и завершить выполнение
returnchunksТип возврата: chunks (HTML) или data (массив)

Кэширование ​

ПараметрПо умолчаниюОписание
cachetrueВключить кэширование
cacheTime3600Время жизни кэша (секунды)

Отладка ​

ПараметрПо умолчаниюОписание
debugfalseВключить отладочные логи

Плейсхолдеры в шаблонах ​

tpl (для каждого URL) ​

ПлейсхолдерОписание
{$url}Полный URL страницы
{$lastmod}Дата последнего изменения (ISO 8601)
{$changefreq}Частота обновления
{$priority}Приоритет
{$filterKey}Ключ фильтра
{$value}Значение фильтра
{$resourceId}ID базового ресурса

tplWrapper ​

ПлейсхолдерОписание
{$output}Все URL элементы
{$schema}XML Schema
{$charset}Кодировка
{$total}Общее количество URL

Примеры ​

Базовый вызов (отдельная страница sitemap) ​

Создайте ресурс /sitemap-filters.xml с шаблоном:

fenom
{'!mFilterSitemap' | snippet}

Только определённые фильтры ​

fenom
{'!mFilterSitemap' | snippet : [
    'filterKeys' => 'color,size,brand'
]}

Комбинации из двух фильтров ​

fenom
{'!mFilterSitemap' | snippet : [
    'maxFilters' => 2,
    'priority' => '0.6'
]}

Внимание: При большом количестве значений это может создать огромное количество URL!

Для конкретной категории ​

fenom
{'!mFilterSitemap' | snippet : [
    'parents' => '5,10,15',
    'filterKeys' => 'color,brand'
]}

Без авто-вывода XML ​

fenom
{set $sitemapXml = '!mFilterSitemap' | snippet : [
    'forceXML' => false
]}

{* Можно обработать или сохранить *}
{$sitemapXml}

Получение данных массивом ​

fenom
{set $urls = '!mFilterSitemap' | snippet : [
    'return' => 'data',
    'forceXML' => false
]}

{* urls — массив с данными *}
Всего URL: {$urls | count}

Кастомный шаблон URL ​

fenom
{'!mFilterSitemap' | snippet : [
    'tpl' => '@INLINE <url>
    <loc>{$url}</loc>
    <lastmod>{$lastmod}</lastmod>
    <changefreq>{$changefreq}</changefreq>
    <priority>{$priority}</priority>
    <xhtml:link rel="alternate" hreflang="ru" href="{$url}"/>
</url>'
]}

Scheduler-задача ​

mFilter включает задачу mfl_generate_sitemap для автоматической генерации sitemap-файла раз в сутки.

Подсказка

Параметры задачи (включая filename для имени выходного файла) и пример ручного запуска описаны в общем разделе: Scheduler-задачи → mfl_generate_sitemap.

Задача отличается от прямого вызова сниппета тем, что сохраняет XML в файл (по умолчанию sitemap-filters.xml в корне сайта), а не отдаёт его как ответ HTTP. Используется когда основная карта сайта собирается отдельно (например, через pdoSitemap), а mFilter добавляет файл с фильтрованными URL.

Интеграция с robots.txt ​

Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/sitemap-filters.xml

Интеграция с pdoSitemap ​

Если используете pdoSitemap для основной карты сайта, создайте отдельный ресурс для фильтров:

/sitemap.xml          — pdoSitemap (основные страницы)
/sitemap-filters.xml  — mFilterSitemap (фильтры)
/sitemap-index.xml    — индексный файл

sitemap-index.xml ​

xml
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <sitemap>
        <loc>https://example.com/sitemap.xml</loc>
    </sitemap>
    <sitemap>
        <loc>https://example.com/sitemap-filters.xml</loc>
    </sitemap>
</sitemapindex>

Рекомендации ​

Количество URL ​

Google рекомендует не более 50,000 URL на один sitemap файл. При большом каталоге:

  • Ограничьте maxFilters значением 1
  • Разделите по категориям (используйте parents)
  • Исключите редкие фильтры

Приоритет ​

Рекомендуемые значения:

  • Главная: 1.0
  • Категории: 0.8
  • Товары: 0.6
  • Фильтры: 0.5-0.7

Частота обновления ​

Для фильтров обычно подходит weekly или monthly, так как структура меняется нечасто.