Дата публикации
27 Августа 2019
Дата изменения
5 Июля 2020
Уникальных просмотров
912

Оглавление

pdoSitemap — быстрый сниппет генерации карты сайта для поисковых систем (sitemap.xml). Главная особенность — очень высокая скорость, по сравнению с аналогичными сниппетами.

По умолчанию отключена проверка прав на доступ к документам. Это легко исправить включением параметра &checkPermissions (Внимание: замедляет работу!):

/* modParser */
[[!pdoSitemap?
    &checkPermissions=`list`
]]

/* pdoParser */
{$_modx->runSnippet('!pdoSitemap', [
'checkPermissions' => 'list'
])}

По возможности ресурсы лучше исключать из карты параметрами сниппета.

Параметры

pdoSitemap принимает все параметры pdoTools и некоторые свои:

Параметр По умолчанию Описание
&sitemapSchema http://www.sitemaps.org/schemas/sitemap/0.9 Схема карты сайта.
&forceXML 1 Принудительно выводить страницу как XML.
&priorityTV Дополнительное поле, в котором указывается приоритет документа. Нужно добавить его в параметр &includeTVs.

Шаблоны

Доступные шаблоны для формирования XML структуры:

&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

  1. Создайте новый документ в корне сайта. На вкладке Документ выберите пустой шаблон, укажите Заголовок документа (не важно какой), и псевдоним sitemap. Проверьте, чтобы стояли галочки «Опубликован» и «Не показывать в меню».
  2. Перейдите на вкладку Настройки и укажите «Тип содержимого» — «XML».
  3. Уберите галочку с «Использовать HTML-редактор» и сохраните документ.
  4. В содержимом ресурса вызовите только сниппет pdoSitemap (см. Примеры ниже).

Примеры

Обычный вывод карты сайта для текущего контекста. В большинстве случаев этого может быть достаточно:

/* modParser */
[[pdoSitemap]]

/* pdoParser */
{$_modx->runSnippet('pdoSitemap')}

Генерируем карту сайта только из определённый контейнеров:

/* modParser */
[[pdoSitemap?
    &parents=`10`
]]

/* pdoParser */
{$_modx->runSnippet('pdoSitemap', [
'parents' => 10
])}

Исключаем ресурсы с id = 15 и 25, вместе с их потомками:

/* modParser */
[[pdoSitemap?
    &parents=`10, -15,-25`
]]

/* pdoParser */
{$_modx->runSnippet('pdoSitemap', [
'parents' => '10, -15,-25'
])}

А теперь исключаем id = 15 с потомками, а 25 — без:

/* modParser */
[[pdoSitemap?
    &resources=`-25`
    &parents=`-15,10`
]]

/* pdoParser */
{$_modx->runSnippet('pdoSitemap', [
'resources' => -25,
'parents' => '-15,10'
])}

Добавляем еще один контекст:

/* modParser */
[[pdoSitemap?
    &resources=`-25`
    &parents=`-15,10`
    &context=`web,catalog`
]]

/* pdoParser */
{$_modx->runSnippet('pdoSitemap', [
'resources' => -25,
'parents' => '-15,10',
'context' => 'web,catalog'
])}

А вот так можно посмотреть лог выборки карты:

/* modParser */
[[pdoSitemap?
    &resources=`-25`
    &parents=`-15,10`
    &context=`web,catalog`
    &showLog=`1`
    &forceXML=`0`
]]

/* pdoParser */
{$_modx->runSnippet('pdoSitemap', [
'resources' => -25,
'parents' => '-15,10',
'context' => 'web,catalog',
'showLog' => 1,
'forceXML' => 0
])}

Благодарность автору

Если по какой-либо причине вы хотите поблагодарить автора данного ресурса, вы можете это сделать одним из удобных для вас способов ниже.

Один из самых популярных способов поблагодарить автора, воспользоваться сервисом Яндекс.Деньги.

Время работы: 0,1123 s
Время запросов: 0,1123 s
Количество запросов: 24
Источник: cache