Карта сайта и 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]]

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

  • А как вы справляетесь если включены ЧПУ, и получается документ типа http://www.8chudo74.ru/sitemap.xml.html

  • это хорошо но а как сделать для 1-0-2 версии этот вариант у меня неработает

    • to ignore: А какую ошибку выдает?
      Я использую этот скрипт и на 1.0.2.

  • Ошибка синтаксического анализа XML: лишние данные после элемента документа
    Адрес: http://pickup-perm.ru/sitemap.xml.htm

    Строка 2, символ 1:Warning: Unterminated comment starting line 1 in /storage/home/srv20820/pickup-perm.ru/manager/includes/document.parser.class.inc.php(770) : eval()’d code on line 1
    ^

  • не работает карта у меня 🙁

    • Да, в сниппете была ошибка, сейчас я обновил файл и теперь все должно быть ок.

  • макс

    не работает
    Priority
    Change Frequency
    Просто не выводит эти поля и все

  • Если вы назвали TV-паарметы по-своему то в вызове сниппета надо указать соответственно:
    &changefreq=Ваше название, &priority=Ваше название

  • Santey

    Макс, может просто указать шаблоны, которые могут использовать этот параметр? 😉

  • Эдик

    Блин, выдает ошибку http://konez-sveta.com/sitemap.xml
    Можете подсказать в чем причина?

    • Ошибку видел, почему возникла сказать не могу.

  • Эдик

    Все отремонтировал. Важно в шаблоне выбрать именно blank

  • Использую MODX Revolution 2.1.3-pl (traditional)

    Подключил сниппет sitemap, создал TV параметры sitemap_changefreq и sitemap_priority (не нашел «DropDown List Menu», поставил «Список (одиночный выбор) — Listbox (Single-Select)»).

    Создал страницу sitemap с типом содержимого XML, в «Соедержимое ресурса» (с отключенным HTML-редактором) вписал [[sitemap]].

    И… ничего 🙁 Открывается девственно чистая страница 🙁
    Почему? Как поправить?

    to Эдик, какую версию MODx вы используете и как подключали sitemap?

  • dklebedev

    Ссылка сдохла.
    Пост облез.
    Кто ответит, тот и съест.

    • 9 комментов за полгода в дискусе и один тут, и, главное, какой содержательный! Ну ты это, пиши еще.

  • Den

    спасибо за полезную информацию