Pdositemap modx revo: pdoSitemap / Сниппеты / pdoTools / docs.modx.pro

pdoSitemap / Сниппеты / pdoTools / docs.modx.pro

Быстрый сниппет генерации карты сайта для поисковых систем (sitemap.xml). Понимает параметры сниппета GoogleSitemap (конвертирует в собственные) и легко его заменяет.

Главная особенность — очень высокая скорость, по сравнению с аналогом. На сайте bezumkin.ru при 1700 страниц скорость генерации возросла в 12 раз, с 8.4 сек. до 0.7.

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

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

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

Параметры

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

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

Шаблоны

&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. 0daily
Более суток и менее недели назад0.75weekly
Более недели и менее месяца назад0.5weekly
Более месяца назад0.25monthly

Инструкция по созданию файла sitemap.xml

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

Примеры

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

[[pdoSitemap]]

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

[[pdoSitemap?
    &parents=`10`
]]

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

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

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

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

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

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

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

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

MODX sitemap | документация с примерами по PdoSitemap

Автор Алексей На чтение 4 мин Просмотров 5.

8к. Опубликовано Обновлено

Содержание

  1. Что такое sitemap.xml
  2. Документация по сниппету pdoSitemap
  3. Параметры
  4. Шаблоны
  5. Создание sitemap.xml в MODX Revo
  6. Больше примеров вызова

Сегодня мы разберем как в MODX Revo создать sitemap.xml. Перед тем как начать, давайте изучим немного теории.

Что такое sitemap.xml

Sitemaps — это XML файл содержащий в себе информацию для роботов поисковых систем, о страницах сайта, подлежащих индексации. Иными словами сайтмап помогает поисковым роботам более быстро определять место нахождения страниц, время и частоту их обновления, а так же их важность.

Документация по сниппету pdoSitemap

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

По умолчанию отключена проверка прав на доступ к документам. Это легко исправить включением параметра 

&checkPermissions (Внимание: замедляет работу!):

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

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

Параметры

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

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

Шаблоны

&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.0daily
Более суток и менее недели назад0.75weekly
Более недели и менее месяца назад0.5weekly
Более месяца назад0.25monthly

Создание sitemap.xml в MODX Revo

Перед тем как начать, вам желательно настроить чпу modx, если оно не настроено.

Создавать sitemap.xml мы будем при помощи pdoSitemap (данный сниппет входит в пакет pdoTools), он у вас должен быть уже установлен. Рассмотрим пошагово, процесс создания сайтмап.

1. Создайте документ и заполните вкладку «Документ» следующим образом:

  • Заголовок – sitemap;
  • Шаблон – пустой шаблон;
  • Псевдоним – sitemap;
  • Не показывать в меню – Да.
  • Опубликован – Да.

2. Перейдите во вкладку «Настройки» и выберите следующее:

  • Тип содержимого – XML.
  • Доступен для поиска – Нет.
  • Использовать HTML редактор – Нет.
  • Сохранить документ (ресурс).

Примечание! Если у вас не настроено ЧПУ, то во вкладке Настройки вероятно нужно так же выбрать — Заморозить URI и ввести в поле URL — sitemap.xml.

Важно! Если поисковые системы не видят файл то вместо встроенного местонахождения выберите прикрепленный файл.

3. В поле содержимое ввести: [[!pdoSitemap]] и снова сохранить.

Все. Можно проверить результат, для того нажмите на кнопку посмотреть, либо перейдите по адресу сайт.ru/sitemap.xml.

Больше примеров вызова

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

[[pdoSitemap?
    &parents=`10`
]]

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

[[pdoSitemap?
    &parents=`10, -17,-27`
]]

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

[[pdoSitemap?
    &resources=`-27`
    &parents=`-17,10`
]]

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

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

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

[[pdoSitemap?
    &resources=`-27`
    &parents=`-17,10`
    &context=`web,catalog`
    &showLog=`1`
    &forceXML=`0`
]]

Пример вызова карты сайта на fenom:

{'!pdoSitemap' | snippet : [ 
'parents' => '0', 
'checkPermissions' => 'list', 
'context' => 'web', 
'showHidden' => '1' 
]}

Что такое pdoTools? (Часть 1)

После создания новой установки MODX следующим шагом часто является установка ряда дополнений для добавления функциональности сайту.

Обычный набор известен:

  • getResources для списка ваших документов
  • getPage для нумерации ваших списков
  • Wayfinder для меню сборки
  • Панировочные сухари для панировочных сухарей
  • GoogleКарта сайта для карты сайта

Но можно заменить их все одним пакетом: pdoTools!

Начнем с того, что может сделать pdoTools.

9 фрагментов

Да, я серьезно. pdoTools содержит 9 сниппетов, которые могут выполнять практически любую функциональность обычного веб-сайта. И почти все они являются заменой другим популярным сниппетам.

pdoResources

pdoResources заменяет getResources.

Как и все другие сниппеты в pdoTools, он не использует объекты xPDO для представления ресурсов. Он работает напрямую с таблицами базы данных. Это делает его быстрее.

Вам не нужно преобразовывать даты ресурсов в метки времени, прежде чем вы сможете передать их в выходной фильтр «дата». И он объединяет только нужные телевизоры, поэтому вы должны указать их в свойстве &includeTVs в виде списка, разделенного запятыми.

 [[pdoResources?
    &родители=`0`
    &includeTVs=`my_tv1,my_tv2`
    &tvPrefix=`tv.`
    &processTVs=`1`
    &includeContent=`1`
    &showLog=`1`
]] 

Одной из наиболее важных функций pdoTools является &showLog свойство. Это позволяет вам проверить, насколько быстрым является фрагмент. Это медленный SQL-запрос или слишком сложный фрагмент? Свойство &showLog поможет вам разобраться.

Второй важной особенностью являются соединения SQL. С помощью pdoResources вы можете создавать сложные запросы и выбирать только то, что вам нужно.

 [[!pdoResources?
    &родители=`0`
    &class=`modResource`
    &leftJoin=`{
        "Родитель": {
            "класс": "модРесурс",
            "on": "modResource.parent = Parent.id"
        },
        "Сделано": {
            "класс": "modUserProfile",
            "on": "modResource. createdby = CreatedBy.internalKey"
        }
    }`
    &выбрать=`{
        "modResource": "modResource.id, modResource.pagetitle",
        "Родитель": "Parent.pagetitle как родитель",
        "CreatedBy": "CreatedBy.fullname как автор"
    }`
    &showLog=`1`
]] 

В приведенном выше примере вам не нужно вызывать какие-либо фрагменты или фильтры вывода, чтобы получить родителя ресурса или имя создателя. Как быстро это работает? Давайте посмотрим на вывод журнала..

Есть много других интересных функций, но эти самые важные.

pdoPage

pdoPage является заменой getPage. Есть несколько отличий от getPage:

  1. Он не показывает пустые страницы. Если у вас нет результатов на странице, или пользователь ввел не ту страницу вручную — вы будете перенаправлены на первую страницу.
  2. Имеет свойство &maxLimit , для которого по умолчанию установлено значение 100. Это гарантирует, что пользователи не смогут замедлить работу вашего сайта, установив &limit=100000 в URL-адресе. Если вы используете getPage — просто попробуйте сделать это на своем сайте.
  3. Устанавливает метатеги на предыдущую и следующую страницы для поисковых роботов в заголовке страницы.
  4. Имеет встроенную пагинацию ajax. Вот как это работает:
 <дел>
    <дел>
        [[!pdoPage?
            &родители=`0`
            &ajaxMode=`по умолчанию`
        ]]
    
[[!+page.nav]]

Разумеется, вы можете изменить разметку, указав дополнительные параметры сниппета.

pdoMenu

Этот фрагмент может заменить Wayfinder. В основном это работает так же, но немного быстрее.

Поскольку объекты xPDO игнорируются, необходимо вручную проверять права доступа к пунктам меню со специальным свойством:

 [[!pdoMenu?
    &родители=`0`
    &checkPermissions=`список`
]] 

По умолчанию все проверки разрешений отключены. Кстати, это свойство можно использовать во всех сниппетах pdoTools.

pdoUsers

В этом фрагменте перечислены пользователи вашего сайта. Вы можете отфильтровать их по группам и ролям:

 [[!pdoUsers?
    &groups=`Авторы`
    &sortdir=`asc`
]] 

Вы можете комбинировать это с pdoPage для предоставления разбитого на страницы списка пользователей:

 [[!pdoPage?
    &element=`pdoUsers`
    &groups=`Авторы`
    &roles=`Член`
    &sortby=`идентификатор`
    &sortdir=`asc`
]]
[[!+page.nav]] 

Заполнители — это все поля из modUser и modUserProfile объекты. Вы можете увидеть их все, если просто установите пустой параметр &tpl (или не установите его вообще, если сниппет не имеет значения tpl по умолчанию).

Пустой &tpl — еще одна общая черта всех сниппетов pdoTools.

pdoSitemap

pdoSitemap создает быструю карту сайта, которая не требует установки ресурса в XML, если свойство &forceXML включено (по умолчанию).

Он кеширует данные, а ключ кеша зависит от параметров сниппета, но вы также можете установить свой собственный ключ.

Чтобы увидеть, насколько он быстр, мы можем протестировать его, отключив &forceXML и включив &showLog . На моем сайте первый запуск занимает почти 30 секунд, а второй всего 0,03:

 [[!pdoSitemap?
    &forceXML=`0`
    &showLog=`1`
]] 

В моей карте сайта 6873 ресурсов.

пдососеди

Фрагмент для создания ссылок на предыдущую, следующую и верхнюю страницы текущего документа.

 [[!pdoСоседи?
    &sortby=`menuindex`
    &sortdirc=`описание`
]] 
pdoCrumbs

Мой вариант простого сниппета для хлебных крошек на сайте. Ничего особенного, за исключением того, что он использует ядро ​​pdoTools с быстрой обработкой фрагментов и выборкой данных.

 [[!pdoCrumbs]] 
pdoTitle

Этот фрагмент генерирует тег title страниц. Работает pdoCrumbs и показывает путь к текущему документу в заголовке.

 [[!pdoTitle]] / [[++site_name]] 

Он поддерживает pdoPage по умолчанию, так что вы увидите количество страниц в заголовке.

 Вопросы / стр. 5 из 593 / Разделы / mysite.com 

Поисковые роботы в восторге!

pdoField

И, наконец, pdoField — это сниппет, позволяющий получить любое поле из любых ресурсов. Это замена как для UltimateParent и getResourceField фрагментов.

Например, нам нужно получить longtitle ресурса с id=15

 [[pdoField?
    &id=`15`
    &field=`длинное название`
]] 

Или, если мы хотим получить pagetitle прародителя текущего документа:

 [[pdoField?
    &id=`[[*id]]`
    &field=`название страницы`
    &верхнее=`2`
]] 

Заключение

О pdoTools можно писать еще и еще, но для первой статьи этого достаточно. В следующих двух статьях я расскажу о скорости и о pdoParser.

Важно помнить, что все сниппеты pdoTools используют одно и то же ядро ​​и большинство параметров можно использовать для всех из них.

Вы можете использовать &showLog , чтобы увидеть, как работают фрагменты, вы можете указать пустые фрагменты, чтобы увидеть доступные заполнители, и вы можете соединять таблицы на лету.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *