pdoSitemap
pdoSitemap — быстрый сниппет генерации карты сайта для поисковых систем (sitemap.xml).
Оглавление
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
- Создайте новый документ в корне сайта. На вкладке Документ выберите пустой шаблон, укажите Заголовок документа (не важно какой), и псевдоним sitemap. Проверьте, чтобы стояли галочки «Опубликован» и «Не показывать в меню».
- Перейдите на вкладку Настройки и укажите «Тип содержимого» — «XML».
- Уберите галочку с «Использовать HTML-редактор» и сохраните документ.
- В содержимом ресурса вызовите только сниппет 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,1196 s
Количество запросов: 24
Источник: cache