Сниппет pdoSitemap предназначен для быстрой генерации XML карты сайта (sitemap.xml) для поисковых систем Google, Яндекс и других. Он автоматически собирает все опубликованные ресурсы сайта и формирует корректный sitemap согласно протоколу sitemaps.org. Основное преимущество pdoSitemap заключается в высокой скорости работы благодаря использованию библиотеки pdoTools и возможности гибкой настройки приоритетов и частоты обновления страниц.
Карта сайта (sitemap.xml) — это специальный файл который содержит информацию о страницах веб-сайта, времени их последнего обновления, частоте изменений и приоритете относительно других страниц. Это помогает поисковым роботам эффективнее индексировать контент, особенно на больших сайтах с тысячами страниц.
- Что такое sitemap.xml и зачем он нужен
- pdoSitemap — параметры карты сайта
- Примеры использования
- Примеры для разных контекстов
- Вызов через Fenom
- Несколько карт для больших сайтов
- Карта категорий (sitemap-categories.xml)
- Карта товаров (sitemap-products.xml)
- Индексный файл (sitemap.xml)
- Создание ресурса sitemap.xml
- Шаг 1. Создание ресурса
- Шаг 2. Настройка типа содержимого
- Шаг 3. Добавление сниппета
- Шаг 4. Сохранение и проверка
- Настройка приоритетов через TV
- Создание TV priority
- Использование в pdoSitemap
- Настройка частоты обновления
- Отладка и логирование
- Регистрация в поисковых системах
- Добавление в Google Search Console
- Добавление в Яндекс.Вебмастер
- Автоматическое уведомление поисковиков
- Оптимизация производительности
Что такое sitemap.xml и зачем он нужен
Файл sitemap.xml выполняет несколько важных функций для SEO оптимизации сайта:
- Ускоряет индексацию новых страниц поисковыми системами;
- Помогает роботам находить страницы глубокой вложенности;
- Указывает приоритет индексирования разных разделов;
- Сообщает частоту обновления контента;
- Облегчает работу с большими сайтами (интернет-магазины, порталы).
По стандарту в один файл sitemap.xml рекомендуется добавлять не более 50 тысяч ссылок. Если количество страниц превышает это число, нужно создать несколько карт и объединить их в индексный файл.
pdoSitemap — параметры карты сайта
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
&sitemapSchema |
http://www.sitemaps.org/schemas/sitemap/0.9 |
Схема XML для карты сайта |
&forceXML |
1 |
Принудительно отдавать страницу как XML |
&priorityTV |
— | TV-параметр для указания приоритета страницы |
&tpl |
— | Чанк для одного URL в карте |
&tplWrapper |
— | Обертка для всей XML карты |
&sortby |
menuindex |
Поле для сортировки ресурсов |
&sortdir |
ASC |
Направление сортировки |
&limit |
0 |
Ограничение количества URL (0 = без ограничений) |
&offset |
0 |
Пропуск ресурсов от начала |
&depth |
10 |
Глубина выборки дочерних ресурсов |
&parents |
0 |
Родительские контейнеры для включения |
&resources |
— | Конкретные ID ресурсов |
&context |
текущий | Контексты для выборки |
&showHidden |
0 |
Включать скрытые от меню |
&showUnpublished |
0 |
Включать неопубликованные |
&showDeleted |
0 |
Включать удаленные |
&hideContainers |
0 |
Исключить контейнеры |
&where |
— | Дополнительные условия SQL |
&scheme |
— | Схема генерации URL |
&checkPermissions |
— | Проверять права доступа (замедляет работу) |
&showLog |
0 |
Вывести отладочную информацию |
Примеры использования
Простейший вызов для генерации карты всего сайта:
[[!pdoSitemap]]
Обратите внимание что вызов должен быть некешируемым через восклицательный знак.
Генерация карты только из определенных контейнеров:
[[!pdoSitemap? &parents=`10` ]]
Исключение ресурсов и их потомков из карты:
[[!pdoSitemap? &parents=`10,-17,-27` ]]
Карта из нескольких контекстов:
[[!pdoSitemap? &context=`web,catalog` ]]
Примеры для разных контекстов
Карта только для основного контекста:
[[!pdoSitemap? &context=`web` &checkPermissions=`list` ]]
Карта для нескольких контекстов одновременно:
[[!pdoSitemap? &context=`web,catalog,blog` &showHidden=`1` ]]
Исключение определенных шаблонов:
[[!pdoSitemap? &templates=`1,3,5,-8` ]]
Вызов через Fenom
Использование шаблонизатора Fenom для более чистого синтаксиса:
{'!pdoSitemap' | snippet : [
'parents' => '0',
'checkPermissions' => 'list',
'context' => 'web',
'showHidden' => '1'
]}
Несколько карт для больших сайтов
Если страниц больше 50 тысяч, создайте несколько карт.
Карта категорий (sitemap-categories.xml)
[[!pdoSitemap? &parents=`10` &depth=`1` &hideContainers=`0` ]]
Карта товаров (sitemap-products.xml)
[[!pdoSitemap? &parents=`10` &class=`msProduct` &loadModels=`minishop2` ]]
Индексный файл (sitemap.xml)
Создайте главный файл со ссылками на все карты:
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
[[!pdoResources?
&parents=`0`
&resources=`100,101,102`
&tpl=`@INLINE
<sitemap>
<loc>[[++site_url]][[~[[+id]]]]</loc>
<lastmod>[[+editedon:date=`%Y-%m-%dT%H:%M:%S+00:00`]]</lastmod>
</sitemap>`
]]
</sitemapindex>
Создание ресурса sitemap.xml
Пошаговая инструкция по созданию карты сайта в MODX Revolution:
Шаг 1. Создание ресурса
Создайте новый ресурс в корне сайта со следующими параметрами:
- Заголовок страницы:
Sitemap - Псевдоним (URL):
sitemap.xml - Шаблон: пустой или минимальный без HTML разметки
- Опубликован: Да (поставить галочку)
- Не показывать в меню: Да (поставить галочку)
Шаг 2. Настройка типа содержимого
Перейдите на вкладку «Настройки ресурса» и установите:
- Тип содержимого:
XML - Content Type:
text/xml
Это критически важно для корректного отображения XML карты в браузере.
Шаг 3. Добавление сниппета
В поле «Содержимое» ресурса вставьте вызов сниппета:
[[!pdoSitemap? &checkPermissions=`list` ]]
Параметр &checkPermissions=list проверяет права доступа пользователей к ресурсам.
Шаг 4. Сохранение и проверка
Сохраните ресурс и проверьте результат в браузере по адресу:
https://ваш-сайт.ru/sitemap.xml
Вы должны увидеть корректный XML файл со списком всех страниц сайта.
Настройка приоритетов через TV
Для гибкого управления приоритетами страниц создайте TV-параметр:
Создание TV priority
- Создайте новый TV-параметр с именем
priority - Тип ввода: Текстовое поле или Список
- Значение по умолчанию:
0.5 - Возможные значения:
0.1, 0.3, 0.5, 0.7, 0.9, 1.0 - Привяжите к нужным шаблонам
Использование в pdoSitemap
[[!pdoSitemap? &includeTVs=`priority` &tvPrefix=`` &priorityTV=`priority`]]
Теперь приоритет каждой страницы будет браться из TV-параметра.
Настройка частоты обновления
Создайте TV-параметр changefreq со значениями:
always— постоянноhourly— ежечасноdaily— ежедневноweekly— еженедельноmonthly— ежемесячноyearly— ежегодноnever— никогда
Использование в сниппете:
[[!pdoSitemap? &includeTVs=`changefreq` &tvPrefix=`` &changefreqTV=`changefreq` ]]
Отладка и логирование
Просмотр лога выборки для отладки:
[[!pdoSitemap?
&resources=`-27`
&parents=`-17,10`
&context=`web,catalog`
&showLog=`1`
&forceXML=`0`
]]
Параметр &showLog=1 выводит подробную информацию о выборке, а &forceXML=0 отключает принудительный XML режим для удобства чтения.
Регистрация в поисковых системах
Добавление в Google Search Console
- Откройте Google Search Console
- Выберите ваш сайт
- Перейдите в раздел «Карты сайта» (Sitemaps)
- Нажмите «Добавить файл Sitemap»
- Введите URL:
sitemap.xml - Нажмите «Отправить»
Google начнет периодически сканировать вашу карту.
Добавление в Яндекс.Вебмастер
- Откройте Яндекс.Вебмастер и войдите в аккаунт
- Выберите ваш сайт из списка
- Перейдите в «Индексирование» → «Файлы Sitemap»
- Нажмите «Добавить sitemap»
- Введите полный URL:
https://ваш-сайт.ru/sitemap.xml - Нажмите «Добавить»
Убедитесь что статус файла отображается как «Добавлен».
Автоматическое уведомление поисковиков
Добавьте ссылку на карту в robots.txt:
User-agent: * Sitemap: https://ваш-сайт.ru/sitemap.xml
Это позволит поисковым роботам автоматически находить вашу карту сайта.
Оптимизация производительности
Для больших сайтов используйте кеширование:
[[pdoSitemap? &parents=`0` &cacheTime=`86400` ]]
Кеш на 24 часа (86400 секунд) существенно ускорит загрузку карты.
Ограничьте глубину выборки если не нужны все уровни:
[[!pdoSitemap? &parents=`0` &depth=`5` ]]






