MODX - Создание sitemap

Содержание:
  1. Что такое файл sitemap.xml
  2. Создание файла sitemap.xml в MODX Revolution и его регистрация в поисковых системах
  3. Комментарии

Статья, в которой описывается процесс создания файла sitemap.xml, содержащего информацию о страницах веб-сайта, и его последующей регистрации в поисковых системах.

Что такое файл sitemap.xml

Файл sitemap.xml – это файл в формате XML, который составлен в соответствие с протоколом sitemap 0.9. Он предназначен для того, чтобы помочь поисковым системам (Яндекс, Google и Bing) проиндексировать страницы вашего сайта или блога. Данный файл, кроме адреса страницы (URL) содержит также ещё дополнительную информацию о каждой веб-странице: дату последней её модификации, насколько часто она изменяется и её приоритет перед другими страницами. Эту дополнительную информацию используют поисковые роботы, чтобы больше понять о каждой странице, а именно как часто надо ту или иную страницу заново индексировать, а также важность данной страницы перед другими страницами этого сайта или блога.

Создание файла sitemap.xml в MODX Revolution и его регистрация в поисковых системах

Для создания файла sitemap.xml будет использовать дополнение pdoTools, а точнее сниппет pdoSitemap. Данное дополнение (pdoTools) у нас уже установлено в MODX Revolution, так что можно сразу переходить к разработке карты сайта для поисковых систем.

1. Создать ресурс SiteMapXML и внести во вкладки "Документ" и "Настройки" следующие данные:

Вкладка "Документ":

  • Заголовок – SiteMapXML.
  • Шаблон – пустой.
  • Псевдоним – sitemap.
  • Не показывать в меню – Да.
  • Опубликован – Да.
MODX Revolution - Создание ресурса SiteMapXML. Вкладка - Документ.

Вкладка "Настройки":

  • Тип содержимого – XML.
  • Доступен для поиска – Нет.
  • Использовать HTML редактор – Нет.
  • Заморозить URI – Да.
  • URI – sitemap.xml.
MODX Revolution - Создание ресурса SiteMapXML. Вкладка - Настройки.

2. Сохранить ресурс SiteMapXML.

3. В поле содержимое ресурса SiteMapXML ввести следующее:

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

4. Проверяем результаты работы сниппета pdoSitemap. Для этого в адресной строке браузера вводим: http://www.mysite.ru/sitemap.xml. MODX Revolution - Результаты работы сниппета pdoSitemap

5. Указать поисковым системам Яндекс, Google и Bing расположение карты сайта sitemap.xml.

Яндекс. В личном кабинете веб-мастера выбрать в левом меню пункт "Настройка индексирования" -> "Файлы Sitemap". В открывшейся форме ввести URL файла sitemap.xml и нажать на кнопку "Добавить".

Google. В личном кабинете веб-мастера в левом меню выбрать пункт "Сканирование" -> "Файлы Sitemap". В открывшейся странице нажать на кнопку "Добавление/Проверка файла sitemap".

Bing. В личном кабинете веб-мастера в левом меню выбрать пункт "Панель мониторинга" -> "Настройка сайта" -> "Sitemaps". В открывшейся странице указать URL файла sitemap.xml и нажать на кнопку "Отправить".

Комментарии: 24

Arhivar
Arhivar
Не понравился мне этот сниппет! Не работает или работает некорректно, если нужно скрыть родителя без потомков или наоборот. Документации, к нему можно сказать нет.
Нашел альтернативу sitemapFriend и работает как надо, гибкие настройки и документация отличная!
Как альтернатива, может кому пригодится.
Александр Мальцев
Александр Мальцев
Всякое бывает. Да, sitemapFriend отличный сниппет с кучей настроек.
martFormS
martFormS
все сделал как в статье но не пашет
Есть сайт на modx 2.7.3, делал карту на pdoSitemap pdo 2.12.6 gk-grad.ru/sitemap.xml
не делает карту никаким генератором

.htaccess может виновать хм,
вот он, может кто знает?
# MODX supports Friendly URLs via this .htaccess file. You must serve web
# pages via Apache with mod_rewrite to use this functionality, and you must
# change the file name from ht.access to .htaccess.
#
# Make sure RewriteBase points to the directory where you installed MODX.
# E.g., "/modx" if your installation is in a "modx" subdirectory.
#
# You may choose to make your URLs non-case-sensitive by adding a NC directive
# to your rule: RewriteRule ^(.*)$ index.php?q=$1 [L,QSA,NC]

RewriteEngine On
RewriteBase /

Header always edit Set-Cookie (.*) "$1; SameSite=Lax"

# Prevent dot directories (hidden directories like .git) to be exposed to the public
# Except for the .well-known directory used by LetsEncrypt a.o
RewriteRule "/\.|^\.(?!well-known/)" - [F]


# Rewrite www.example.com -> example.com -- used with SEO Strict URLs plugin
#RewriteCond %{HTTP_HOST} .
#RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC]
#RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
#
# or for the opposite example.com -> www.example.com use the following
# DO NOT USE BOTH
#
#RewriteCond %{HTTP_HOST} !^$
#RewriteCond %{HTTP_HOST} !^www\. [NC]
#RewriteCond %{HTTP_HOST} (.+)$
#RewriteRule ^(.*)$ https://www.%1/$1 [R=301,L] .



# Rewrite secure requests properly to prevent SSL cert warnings, e.g. prevent 
# https://www.example.com when your cert only allows https://secure.example.com
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]



# Redirect the manager to a specific domain - don't rename the ht.access file
# in the manager folder to use this this rule
#RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
#RewriteCond %{REQUEST_URI} ^/manager [NC]
#RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]



# The Friendly URLs part
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]



# Make sure .htc files are served with the proper MIME type, which is critical
# for XP SP2. Un-comment if your host allows htaccess MIME type overrides.

#AddType text/x-component .htc



# If your server is not already configured as such, the following directive
# should be uncommented in order to set PHP's register_globals option to OFF.
# This closes a major security hole that is abused by most XSS (cross-site
# scripting) attacks. For more information: http://php.net/register_globals
#
# To verify that this option has been set to OFF, open the Manager and choose
# Reports -> System Info and then click the phpinfo() link. Do a Find on Page
# for "register_globals". The Local Value should be OFF. If the Master Value
# is OFF then you do not need this directive here.
#
# IF REGISTER_GLOBALS DIRECTIVE CAUSES 500 INTERNAL SERVER ERRORS :
#
# Your server does not allow PHP directives to be set via .htaccess. In that
# case you must make this change in your php.ini file instead. If you are
# using a commercial web host, contact the administrators for assistance in
# doing this. Not all servers allow local php.ini files, and they should
# include all PHP configurations (not just this one), or you will effectively
# reset everything to PHP defaults. Consult www.php.net for more detailed
# information about setting PHP directives.

#php_flag register_globals Off



# For servers that support output compression, you should pick up a bit of
# speed by un-commenting the following lines.

#php_flag zlib.output_compression On
#php_value zlib.output_compression_level 5

Header set Access-Control-Allow-Origin *

# The following directives stop screen flicker in IE on CSS rollovers. If
# needed, un-comment the following rules. When they're in place, you may have
# to do a force-refresh in order to see changes in your designs.

ExpiresActive On

<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access 7 days"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"
ExpiresByType text/html "access plus 7 day"
ExpiresByType text/x-javascript "access 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/x-icon "access 1 year"
ExpiresByType application/x-shockwave-flash "access 1 year"
</IfModule>

# Cache-Control
<ifModule mod_headers.c>
# 30 ����
<filesMatch "\.(ico|pdf|flv|jpg|svg|webp|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
# 30 ����
<filesMatch "\.(css|js)$">
#Header set Cache-Control "max-age=2592000, public"
</filesMatch>
# 2 ���
<filesMatch "\.(xml|txt)$">
#Header set Cache-Control "max-age=172800, public, must-revalidate"
</filesMatch>
# 1 ����
<filesMatch "\.(html|htm|php)$">
#Header set Cache-Control "max-age=172800, private, must-revalidate"
</filesMatch>
</ifModule>

#������ ������ HTTP-���������� Vary ��������� ��������� MSIE
<IfModule mod_setenvif.c>
BrowserMatch "MSIE" force-no-vary
BrowserMatch "Mozilla/4.[0-9]{2}" force-no-vary
</IfModule>
Вячеслав
Вячеслав
Александр, нужна ваша помощь в sitemap добавляется вот это:
<script type="text/javascript" charset="utf-8" id="zm-extension"/><code>
В консоле гугла пишет что он не может распознать данный тег. Что делать ?
Александр Мальцев
Александр Мальцев
У вас ресурс должен быть без шаблона и иметь тип содержимого XML.
Алексей
Алексей
Столкнулся с проблемой:
По адресу:
http://мой сайт/sitemap.xml
Выводиться одна строчка:
http://мой сайт/ 2018-02-25T16:46:31+03:00 daily 1.0
А если присмотреться — то перед ее показом — мгновенно мелькает XML-карты сайта, а затем мгновенно перекрывается этой строчкой,

Нажимал одновременно «Посмотреть» и заскриншотил — действительно мелькает карта сайта — Но почему она потом переписывается строкой:
http://мой сайт/ 2018-02-25T16:46:31+03:00 daily 1.0
Кто сталкивался и что посоветуете?

Что предпринимал:

Использовал разное «Содержимое» для Sitemap:

1-й Вариант:

[[!pdoSitemap?
  &checkPermissions=`list`
]]
2-й Вариант:
[[pdoSitemap]]
P.S.: MODX Revolution 2.6.1-pl / pdoTools / Реальный хостинг
Никита
Никита
Добрый день, Александр

Имею следующую проблему.

Настроил ЧПУ по этому мануалу web-revenue.ru/nastroyka-chpu-modx (не реклама, для ясности)
А так же убрал префикс html с документов MODX в ЧПУ
Пытаюсь вывести Sitemap.xml по вашему мануалу.
.
Все сделал, как написано. Шаблон — пустой, но почему то переходя по ссылке
http://mysite/sitemap.xml
у меня за место xml файла выводиться шаблон сайта.

Так же и с файлом robots.txt

OC:macOS, LocalServer: Laravel Valet (Nginx + PHP 7.1, MariaDB)
Никита
Никита
Видимо проблема была в среде разработки…

Пробовал переносить на OpenServer выдавались ошибки.

При создании заново на OpenServer все отрабатывает хорошо. По этому видимо драйвек для modx не подходит
Александр Мальцев
Александр Мальцев
Уберите шаблон, сохраните ресурс, очистите кэш сайта и попробуйте открыть заново ресурс sitemap.xml.
Evgenij
Evgenij
Александр, доброго времени суток!

Подскажите пожалуйста ответ на глупый вопрос: как внести вновь созданную страницу в карту сайта?? У меня чот ничего не получается… Создал новую страницу, в ней есть вкладки где отмечается видимость в карте сайта, оставляю там «Да», обновляю там все, кэш чищу… и нифига!!! блин! КАК?
Александр Мальцев
Александр Мальцев
Здравствуйте! Проверьте, вызываете ли вы ресурс pdoSitemap не кэшированным, а также попробуйте убрать у ресурса галочку «Кэшируемый».
Второй момент, может вы просто не опубликовали ресурс, и он у вас не попадает в sitemap.
Если нужно включить в sitemap все скрытые и не опубликованные ресурсы то так:
[[!pdoSitemap?
  &checkPermissions=`list`
  &showUnpublished=`1`
  &showHidden=`1`
  &parents =`0`
]]
Evgenij
Evgenij
Вечер добрый!
Первый вариант! И "!" в вызове не стоял и галочка «Кэшируемый» не была снята.
Ресурс был опубликован. А все ресурсы в карту сайта запиховывать не хочется, да и не нужно.
Ну как всегда СПАСИБО!
На счет кэша нюанс видать изначально не принял во внимание, вот и закешировался файл. Но успел уже сделать, выпустил сайтмап заново… Не знаю конечно какие последствия будут, но по крайней мере его адрес тот же. Но ваш вариант менее масштабный, от того и правильней, конечно же ))
Max
Max
sitemap стал выдавать ошибку:

This page contains the following errors:
error on line 22 at column 10: Opening and ending tag mismatch: link line 0 and head
Below is a rendering of the page up to the first error.

Что делать??
Max
Max
Проблема решилась! Был указан шаблон, хотя изначально стоял пустой и карта работала и как то сбился на другой шаблон.
Александр
Александр
Здравствуйте. А подскажите такой момент: при использовании Collections есть возможность сгенерировать карту сайта? Как я понял pdoSitemap с этой задачей не справляется. Может Вам доводилось с такой проблемой встречаться?
Александр
Александр
Что-то я под вечер затупил. Достаточно было использовать &showHidden=`1`
Юрий
Юрий
Здравствуйте, Александр!

Не могу понять как регулировать , у меня по умолчанию везде 1, и этот параметр changefreq>daily — каждый день это слишком много, так же не отображаются статьи в которых стоит галочка не показывать в меню. Это как-то можно регулировать?
Александр Мальцев
Александр Мальцев
Здравствуйте, Юрий.
По умолчанию данные параметры (changefreq и priority) задаются в зависимости от того, сколько времени прошло от даты его последнего изменения. Если документ новый, то устанавливаются более высокие значения. А если он изменялся давно, то более указываются более низкие.
Если вас это не устраивает, то можете их задать вручную с помощью параметра tpl. Для того чтобы убрать скрытые для меню ресурсы необходимо написать условие where.
[[!pdoSitemap?
  &tpl=`@INLINE <url><loc>[[+url]]</loc><lastmod>[[+date]]</lastmod><changefreq>monthly</changefreq><priority>0.25</priority></url>`
  &where=`{"hidemenu":"0"}`
]]
Юрий
Юрий
Спасибо)
Игорь Денисов
Игорь Денисов
Здравствуйте, Александр!
Возникла проблема с sitemap.xml. Сделал все так же, как вы описали. Но формируется лишь только карта с единственным тегом:
<urlset></urlset>
Даже Search Console при сканировании файла sitemap.xml выдает ошибку, что нет обязательного тега XML.
С чем это может быть связано? И как можно исправить?
Александр Мальцев
Александр Мальцев
Игорь, здравствуйте.
Проверьте, установлен ли pdoTools. Попробуйте обновить его на новую версию.
Обратите внимание на то, что этот ресурс кроме вызова этого сниппета не должен больше ничего содержать.
[[!pdoSitemap?
  &checkPermissions=`list`
]]
Евгений
Евгений
Работает именно как в комментарии, как в приведенном примере не работает.
Аноним
Аноним
Александр, возник вопрос.
Например, есть сайт, хорошо продвинутый в поисковиках, с высокой посещаемостью.
Сайт на wordpress, если я его перенесу на modx, он не упадет в поисковиках?
Слышала, такое бывает при смене cms
Александр Мальцев
Александр Мальцев
Анна, если Вы сохраните такую же структуру какая и была, то ничего страшного не произойдёт.