Сегодня мы разберем как в MODX Revo создать sitemap.xml. Перед тем как начать, давайте изучим немного теории.
Что такое sitemap.xml
Sitemaps — это XML файл содержащий в себе информацию для роботов поисковых систем, о страницах сайта, подлежащих индексации. Иными словами сайтмап помогает поисковым роботам более быстро определять место нахождения страниц, время и частоту их обновления, а так же их важность.
Документация по сниппету pdoSitemap
Быстрый сниппет генерации карты сайта для поисковых систем (sitemap.xml). Понимает параметры сниппета GoogleSitemap (конвертирует в собственные) и легко его заменяет. Главная особенность — очень высокая скорость, по сравнению с аналогом.
По умолчанию отключена проверка прав на доступ к документам. Это легко исправить включением параметра &checkPermissions (Внимание: замедляет работу!):
[[!pdoSitemap?
&checkPermissions=`list`
]]
По возможности ресурсы лучше исключать из карты параметрами сниппета.
Параметры
pdoSitemap принимает все параметры pdoTools и некоторые свои:
Параметр | По умолчанию | Описание |
---|---|---|
&sitemapSchema | http://www.sitemaps.org/schemas/sitemap/0.9 | Схема карты сайта. |
&forceXML | 1 | Принудительно выводить страницу как XML. |
&priorityTV | Дополнительное поле, в котором указывается приоритет документа. Нужно добавить его в параметр &includeTVs |
Шаблоны
&tpl
@INLINE <url>\n\t
<loc>[[+url]]</loc>\n\t
<lastmod>[[+date]]</lastmod>\n\t
<changefreq>[[+update]]</changefreq>\n\t
<priority>[[+priority]]</priority>\n
</url>
&tplWrapper
@INLINE <?xml version=\"1.0\" encoding=\"[[++modx_charset]]\"?>\n<urlset xmlns=\"[[+schema]]\">\n[[+output]]\n</urlset>
Приоритет и частота обновления для поисковиков устанавливаются в зависимости от последней даты изменения документа:
Времени с последнего обновления документа | Приоритет | Частота обновления |
---|---|---|
Менее суток назад | 1.0 | daily |
Более суток и менее недели назад | 0.75 | weekly |
Более недели и менее месяца назад | 0.5 | weekly |
Более месяца назад | 0.25 | monthly |
Создание sitemap.xml в MODX Revo
Перед тем как начать, вам желательно настроить чпу modx, если оно не настроено.
Создавать sitemap.xml мы будем при помощи pdoSitemap (данный сниппет входит в пакет pdoTools), он у вас должен быть уже установлен. Рассмотрим пошагово, процесс создания сайтмап.
1. Создайте документ и заполните вкладку «Документ» следующим образом:
- Заголовок – sitemap;
- Шаблон – пустой шаблон;
- Псевдоним – sitemap;
- Не показывать в меню – Да.
- Опубликован – Да.
2. Перейдите во вкладку «Настройки» и выберите следующее:
- Тип содержимого – XML.
- Доступен для поиска – Нет.
- Использовать HTML редактор – Нет.
- Сохранить документ (ресурс).
Примечание! Если у вас не настроено ЧПУ, то во вкладке Настройки вероятно нужно так же выбрать — Заморозить URI и ввести в поле URL — sitemap.xml.
Важно! Если поисковые системы не видят файл то вместо встроенного местонахождения выберите прикрепленный файл.
3. В поле содержимое ввести: [[!pdoSitemap]] и снова сохранить.
Все. Можно проверить результат, для того нажмите на кнопку посмотреть, либо перейдите по адресу сайт.ru/sitemap.xml.
Больше примеров вызова
Генерируем карту сайта только из определённый контейнеров:
[[pdoSitemap?
&parents=`10`
]]
Исключаем ресурсы с id = 17 и 27, вместе с их потомками:
[[pdoSitemap?
&parents=`10, -17,-27`
]]
А теперь исключаем id = 17 с потомками, а 27 — без:
[[pdoSitemap?
&resources=`-27`
&parents=`-17,10`
]]
Добавляем еще один контекст:
[[pdoSitemap?
&resources=`-25`
&parents=`-15,10`
&context=`web,catalog`
]]
А вот так можно посмотреть лог выборки карты:
[[pdoSitemap?
&resources=`-27`
&parents=`-17,10`
&context=`web,catalog`
&showLog=`1`
&forceXML=`0`
]]
Пример вызова карты сайта на fenom:
{'!pdoSitemap' | snippet : [
'parents' => '0',
'checkPermissions' => 'list',
'context' => 'web',
'showHidden' => '1'
]}
Примечание и как создать sitemap.xml с ссылками на друге карты
В sitemap.xml рекомендуется добавлять не более 50 тысяч ссылок. Если количество страниц сайта превышает это число, нужно сделать несколько карт (несколько ресурсов).
А в файле по адресу site.com/sitemap.xml указать на них ссылки, например при помощи pdoResources:
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
[[pdoResources?
&parents=`[[*id]]`
&limit=`0`
&tpl=`sitemapsTpl`
]]
</sitemapindex>
Где чанк sitemapsTpl
содержит следующий код:
<sitemap>
<loc>[[~[[+id]]? &scheme=`full`]]</loc>
</sitemap>
Должно получиться следующее.
Можно ли как-то сделать автоматическую разбивку карты сайта на несколько частей? Т.е. не руками разбивать скажем по 10000 ресурсов в каждом с использованием limit и offset , т.к. ресурсов несколько сотен тысяч и создавать вручную сотни файлов — это очень неудобно.
Я такого способа не знаю
Привет привет, а можете подсказать как выводить ресурсы в карту сайта с фильтрацией по шаблону? пробовал template, не получилось
Привет. В плане с фильтрацией? Как там и что должно фильтроваться? Для выборки по определенному шаблону скорее всего нужно использовать pdoResources
Здравствуйте!
Подскажите, а как реализовать генерацию sitemap, чтобы туда не попадали 301/404 страницы?
Здравствуйте. Они туда и не попадают)
Здравствуйте, всё сразу заработало. Но вот вопрос — все ссылки в карте сайта по протоколу http:
http://www.stek…..
А сайт на протоколе https// Будет ли такой файл sitemap.xml правильным. Или его надо переделать, и как?
Здравствуйте. Если сайт корректно переведен на https, то и ссылки в sitemap.xml должны генериться и быть с https.
Я сделал точно по Вашим урокам (настройка системы, настройка ЧПУ и файл sitemap создал). На Вашей картинке [[!pdoSitemap]] вставлено и черным цветом отображено (в поле формы страницы), а у меня зеленые квадратные скобки и синим шрифтом название pdoSitemap, как в тексте html документа.
Карта сайта, в итоге, создается, но не показывает страницы (вообще), которые являются вложенными в страницу-контейнер.
А яндекс.вебмастер пишет, что страницы (они есть в sitemap) отсутствуют в sitemap и предлагает их туда добавить. Т.е. он их в карте сайта не видит просто.
Где ошибка, можете подсказать?
А если вывести так
+ Тип содержимого: должен быть XML и попробуйте поставить Местонахождение содержимого: прикрепленный файл.