Карта сайта и google sitemap в MODx

Каждый сайт, содержимое которого обновляется достаточно динамично, неплохо дополнять картой сайта в формате xml. Также хорошим тоном является составление карты сайта для пользователей. Поисковые системы их тоже «любят». Рассмотрим, как это можно сделать в MODx.

Карта сайта в формате HTML

Для создания карты сайта, как правило, необходимо создать специальную страницу, используя шаблон, который вы считаете для нее наиболее подходящим. Затем вызвать сниппет Wayfinder, например следующим образом:

[[Wayfinder? &startId=0 &level=0 ]]

Сниппет Wayfinder входит в список поставляемых вместе с CMS сниппетов и идеально подходит для решения задачи создания карты сайта. Отмечу только то, что по умолчанию страницы, у которых не стоит флаг «показывать в меню» не включаются в карту сайта. Чтобы исправить ситуацию, надо вызвать Wayfinder с параметром &ignoreHidden=1:

[[Wayfinder? &startId=0 &level=0 &ignoreHidden=1 ]]

Для решения этой задачи можно использовать сниппет sitemap с кодом вызова:

[[sitemap? &format=ulli]]

Об этом сниппете речь пойдет дальше, но его использование для составления HTML карты сайта может оказаться неудобным, т.к. сниппет не имеет расширенных возможностей по оформлению карты по сравнению с Wayfinder.

Google sitemap для MODx

О google sitemap можно почитать здесь. Сгенерировать карту сайта можно с помощью различных online сервисов, например этого. Файл sitemap.xml придется обновлять после добавления или удаления страниц сайта. Для редко обновляющихся сайтов такое решение может оказаться приемлемым, но в большинстве случаев желательно создать динамически обновляющуюся карту сайта.

Динамическую карту сайта можно сделать, используя сниппет Ditto или специальный сниппет sitemap. Найти его в Интернете стоило немалых усилий, поэтому я раместил его у себя на сайте, сохранив информацию о разработчике.

Сниппет sitemap работает несколько быстрее Ditto, его мы и рассмотрим. Для его установки необходимо создать сниппет sitemap и скопировать в него содержимое этого файла.

Для того чтобы сгенерировать карту сайта, нужно следующее:

1) Создать TV параметры sitemap_changefreq и sitemap_priority

sitemap_changefreq
Тип: DropDown List Menu
Возможные значения : always||hourly||daily||weekly||monthly||yearly||never
Значение по умолчанию : поставьте наиболее актуальный для вашего сайта период обновления (например weekly).

sitemap_priority
Тип: DropDown List Menu
Возможные значения : 0.1||0.2||0.3||0.4||0.5||0.6||0.7||0.8||0.9||1
Значение по умолчанию :0.5 (можете поставить любое другое).

2) Создать новый документ в корне сайта

3) Установить «Псевдоним» = sitemap.xml (Семантические URL должны быть включены)

4) Выбрать шаблон «(blank)» в настройках документа-общие

5) Если HTML-редактор контента включен, отключить его

6) Выбрать тип содержимого «text/xml’ в настройках страницы

7) Вставить в «Содержимое страницы»

8) В контент внести [[sitemap]]

9) Обновить сайт.

Возникает вопрос: как исключить из google sitemap некоторые страницы. Сниппет sitemap поддерживает два способа исключения документов:

— по TV-параметру

Необходимо создать TV-параметр sitemap_exclude типа DropDown List Menu с возможными значениями 0||1 и значением по умолчанию 0 для всех шаблонов. Далее выбрать для него значение 1 на всех страницах, которые не должны отображаться в карте сайта.

— по имени шаблона

В вызове можно указать шаблоны или идентификаторы шаблонов страниц, которые не должны отображаться в карте сайта. Код вызова будет примерно таким:

[[sitemap? &excludeTemplates=myTemplateName,3,4]]

Я немного доработал скрипт, теперь он на главную страницу сайта не выдает ссылку с псевдонимом, что помогает избежать дублирования контента главной страницы