MODX - Создание sitemap

Александр Мальцев
Александр Мальцев
27K
24
Содержание:
  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

  1. Arhivar
    Arhivar
    2022-06-13 20:58:34
    Не понравился мне этот сниппет! Не работает или работает некорректно, если нужно скрыть родителя без потомков или наоборот. Документации, к нему можно сказать нет.
    Нашел альтернативу sitemapFriend и работает как надо, гибкие настройки и документация отличная!
    Как альтернатива, может кому пригодится.
  1. Александр Мальцев
    Александр Мальцев
    2022-06-14 14:41:11
    Всякое бывает. Да, sitemapFriend отличный сниппет с кучей настроек.
  • martFormS
    martFormS
    2021-05-28 16:58:25
    все сделал как в статье но не пашет
    Есть сайт на 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>
    1. Вячеслав
      Вячеслав
      2020-02-09 04:47:13
      Александр, нужна ваша помощь в sitemap добавляется вот это:
      <script type="text/javascript" charset="utf-8" id="zm-extension"/><code>
      В консоле гугла пишет что он не может распознать данный тег. Что делать ?
      1. Александр Мальцев
        Александр Мальцев
        2020-02-10 06:45:28
        У вас ресурс должен быть без шаблона и иметь тип содержимого XML.
    2. Алексей
      Алексей
      2018-02-26 12:13:35
      Столкнулся с проблемой:
      По адресу:
      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 / Реальный хостинг
      1. Никита
        Никита
        2018-01-12 14:10:00
        Добрый день, Александр

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

        Настроил ЧПУ по этому мануалу 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)
        1. Никита
          Никита
          2018-01-12 17:38:43
          Видимо проблема была в среде разработки…

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

          При создании заново на OpenServer все отрабатывает хорошо. По этому видимо драйвек для modx не подходит
        2. Александр Мальцев
          Александр Мальцев
          2018-01-14 06:52:29
          Уберите шаблон, сохраните ресурс, очистите кэш сайта и попробуйте открыть заново ресурс sitemap.xml.
      2. Evgenij
        Evgenij
        2017-11-27 23:41:23
        Александр, доброго времени суток!

        Подскажите пожалуйста ответ на глупый вопрос: как внести вновь созданную страницу в карту сайта?? У меня чот ничего не получается… Создал новую страницу, в ней есть вкладки где отмечается видимость в карте сайта, оставляю там «Да», обновляю там все, кэш чищу… и нифига!!! блин! КАК?
        1. Александр Мальцев
          Александр Мальцев
          2017-11-28 15:55:03
          Здравствуйте! Проверьте, вызываете ли вы ресурс pdoSitemap не кэшированным, а также попробуйте убрать у ресурса галочку «Кэшируемый».
          Второй момент, может вы просто не опубликовали ресурс, и он у вас не попадает в sitemap.
          Если нужно включить в sitemap все скрытые и не опубликованные ресурсы то так:
          [[!pdoSitemap?
            &checkPermissions=`list`
            &showUnpublished=`1`
            &showHidden=`1`
            &parents =`0`
          ]]
          
        2. Evgenij
          Evgenij
          2017-11-28 18:15:48
          Вечер добрый!
          Первый вариант! И "!" в вызове не стоял и галочка «Кэшируемый» не была снята.
          Ресурс был опубликован. А все ресурсы в карту сайта запиховывать не хочется, да и не нужно.
          Ну как всегда СПАСИБО!
          На счет кэша нюанс видать изначально не принял во внимание, вот и закешировался файл. Но успел уже сделать, выпустил сайтмап заново… Не знаю конечно какие последствия будут, но по крайней мере его адрес тот же. Но ваш вариант менее масштабный, от того и правильней, конечно же ))
      3. Max
        Max
        2017-08-19 11:16:48
        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.

        Что делать??
        1. Max
          Max
          2017-08-19 11:25:21
          Проблема решилась! Был указан шаблон, хотя изначально стоял пустой и карта работала и как то сбился на другой шаблон.
      4. Александр
        Александр
        2017-03-21 21:49:26
        Здравствуйте. А подскажите такой момент: при использовании Collections есть возможность сгенерировать карту сайта? Как я понял pdoSitemap с этой задачей не справляется. Может Вам доводилось с такой проблемой встречаться?
        1. Александр
          Александр
          2017-03-22 10:41:03
          Что-то я под вечер затупил. Достаточно было использовать &showHidden=`1`
      5. Юрий
        Юрий
        2017-03-15 10:04:34
        Здравствуйте, Александр!

        Не могу понять как регулировать , у меня по умолчанию везде 1, и этот параметр changefreq>daily — каждый день это слишком много, так же не отображаются статьи в которых стоит галочка не показывать в меню. Это как-то можно регулировать?
        1. Александр Мальцев
          Александр Мальцев
          2017-03-15 16:39:51
          Здравствуйте, Юрий.
          По умолчанию данные параметры (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"}`
          ]]
          
        2. Юрий
          Юрий
          2017-03-15 17:04:08
          Спасибо)
      6. Игорь Денисов
        Игорь Денисов
        2016-08-01 17:44:27
        Здравствуйте, Александр!
        Возникла проблема с sitemap.xml. Сделал все так же, как вы описали. Но формируется лишь только карта с единственным тегом:
        <urlset></urlset>
        Даже Search Console при сканировании файла sitemap.xml выдает ошибку, что нет обязательного тега XML.
        С чем это может быть связано? И как можно исправить?
        1. Александр Мальцев
          Александр Мальцев
          2016-08-05 11:48:43
          Игорь, здравствуйте.
          Проверьте, установлен ли pdoTools. Попробуйте обновить его на новую версию.
          Обратите внимание на то, что этот ресурс кроме вызова этого сниппета не должен больше ничего содержать.
          [[!pdoSitemap?
            &checkPermissions=`list`
          ]]
          
        2. Евгений
          Евгений
          2017-03-06 20:44:28
          Работает именно как в комментарии, как в приведенном примере не работает.
      7. Анна
        Анна
        2015-10-13 15:10:59
        Александр, возник вопрос.
        Например, есть сайт, хорошо продвинутый в поисковиках, с высокой посещаемостью.
        Сайт на wordpress, если я его перенесу на modx, он не упадет в поисковиках?
        Слышала, такое бывает при смене cms
        1. Александр Мальцев
          Александр Мальцев
          2015-10-14 12:46:18
          Анна, если Вы сохраните такую же структуру какая и была, то ничего страшного не произойдёт.