Skip to content
  1. Компоненты
  2. pdoTools
  3. Сниппеты
  4. pdoSitemap

pdoSitemap

Быстрый сниппет генерации карты сайта для поисковых систем (sitemap.xml). Понимает параметры сниппета GoogleSitemap (конвертирует в собственные) и легко его заменяет.

Главная особенность - очень высокая скорость, по сравнению с аналогом. На сайте bezumkin.ru при 1700 страниц скорость генерации возросла в 12 раз, с 8.4 сек. до 0.7.

По умолчанию отключена проверка прав на доступ к документам. Это легко исправить включением параметра &checkPermissions (Внимание: замедляет работу!):

modx
[[!pdoSitemap?
  &checkPermissions=`list`
]]

По возможности ресурсы лучше исключать из карты параметрами сниппета.

Параметры

pdoSitemap принимает все параметры pdoTools и некоторые свои:

ПараметрПо умолчаниюОписание
&sitemapSchema<http://www.sitemaps.org/schemas/sitemap/0.9>Схема карты сайта.
&forceXML1Принудительно выводить страницу как XML.
&priorityTVДополнительное поле, в котором указывается приоритет документа. Нужно добавить его в параметр &includeTVs

Шаблоны

modx
@INLINE <url>\n\t
<loc>[[+url]]</loc>\n\t
<lastmod>[[+date]]</lastmod>\n\t
<changefreq>[[+update]]</changefreq>\n\t
<priority>[[+priority]]</priority>\n
</url>
modx
@INLINE <?xml version=\"1.0\" encoding=\"[[++modx_charset]]\"?>\n<urlset xmlns=\"[[+schema]]\">\n[[+output]]\n</urlset>

Приоритет и частота обновления для поисковиков устанавливаются в зависимости от последней даты изменения документа:

Времени с последнего обновления документаПриоритетЧастота обновления
Менее суток назад1.0daily
Более суток и менее недели назад0.75weekly
Более недели и менее месяца назад0.5weekly
Более месяца назад0.25monthly

Инструкция по созданию файла sitemap.xml

  1. Создайте новый документ в корне сайта. На вкладке Документ выберите пустой шаблон, укажите Заголовок документа (не важно какой), и псевдоним sitemap. Проверьте, чтобы стояли галочки «Опубликован» и «Не показывать в меню».
  2. Перейдите на вкладку Настройки и укажите «Тип содержимого» - «XML».
  3. Уберите галочку с «Использовать HTML-редактор» и сохраните документ.
  4. В содержимом ресурса вызовите только сниппет pdoSitemap (см. Примеры ниже).

Примеры

Обычный вывод карты сайта для текущего контекста. В большинстве случаев этого может быть достаточно:

modx
[[pdoSitemap]]

Генерируем карту сайта только из определённый контейнеров:

modx
[[pdoSitemap?
  &parents=`10`
]]

Исключаем ресурсы с id = 15 и 25, вместе с их потомками:

modx
[[pdoSitemap?
  &parents=`10, -15,-25`
]]

А теперь исключаем id = 15 с потомками, а 25 - без:

modx
[[pdoSitemap?
  &resources=`-25`
  &parents=`-15,10`
]]

Добавляем еще один контекст:

modx
[[pdoSitemap?
  &resources=`-25`
  &parents=`-15,10`
  &context=`web,catalog`
]]

А вот так можно посмотреть лог выборки карты:

modx
[[pdoSitemap?
  &resources=`-25`
  &parents=`-15,10`
  &context=`web,catalog`
  &showLog=`1`
  &forceXML=`0`
]]