Урок 14 – MODx XML карта сайта. Modx revo sitemap


Урок 14 – MODx XML карта сайта

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

На этом уроке мы создадим XML карту сайта для поисковых машин с помощью сниппета Sitemap.

Приступаем к созданию MODx Evo Sitemap

Сниппет Sitemap не устанавливается вместе с CMS, поэтому первое, что нам нужно сделать это создать сам снипет. Предварительно скачайте код сниппета Sitemap. Перейдите на страницу управления сниппетами и создайте сниппет с именем Sitemap, далее откройте скаченный файл и скопируйте его содержимое в код сниппета, сохраните наш сниппет.

Для того чтобы наш сниппет заработал, нам необходимо создать для него несколько TV параметров:

sitemap_changefreq – задает частоту обновленяи информации на нашем сайте, обратите внимание на заполнение полей, вам нужно сделать точно также:

sitemap modx

sitemam_priority – задает приоритет индексации, заполните параметры также как на изображении:

modx sitemap

Для обоих параметров выделите все шаблоны, для которых они будут доступны.

Теперь откройте любой ресурс для редактирования и обратите внимание на то, что у вас появилось 2 параметра, которые вы можете редактировать или задавать во время создания нового ресурса, или оставить значения по умолчанию:

modx evo sitemap

Нам осталось вызвать наш созданный сниппет MODx Sitemap.

Для этого создайте новый ресурс в корневой директории нашего сайта, назовите его к примеру XML карта сайта в поле псевдоним впишите sitemap.xml, а в качестве шаблона выберите пустой шаблон blank:

modx sitemap

Также необходимо снять галочку показывать в меню, и на вкладке «Настройка страницы» отменить кэширование, изменить тип данных страницы на text/xml, а также отключить визуальный редактор:

sitemap modx

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

[ [Sitemap]]

Сохраните ресурс и откройте его в режиме просмотра, у вас должна появиться следующая информация:

modx evo sitemap

Теперь вы можете в панели вебмастера Yandex и Google указать ссылку на вашу карту сайта и убедиться, что у нее верный формат.

В этом уроке мы создали Sitemap.xml для MODx Evolution. В следующем уроке мы рассмотрим, как с помощью сниппета Wayfinder можно создать вспомогательное меню на странице.

modx-evo.ru

Создание в Modx карты сайта — sitemap.xml

16 июн 2013 г. в 22:58

MODX Revolution позволяет сгенерировать файл «sitemap.xml» на лету несколькими способами. Наиболее распространёнными дополнениями для этих целей являются сниппеты «GoogleSiteMap» и «pdoCrumbs» из пакета «pdoTools». Оба сниппета позволяют создать и настроить карту сайта за несколько минуты. Мы будем рассматривать создание карты с помощью «GoogleSiteMap», хотя с «pdoCrumbs» делается всё аналогичным образом.

Скачиваем и устанавливаем пакет «GoogleSiteMap». Делается это через верхнее меню «Приложения - Установщик».

Создаем новый ресурс и заполняем его следующим образом:

В содержимом ресурса вызываем сниппет:

[[!GoogleSiteMap]]

Карта сайта выводится в xml формате, поэтому в настройках ресурса переходим на вкладку «Настройки» и указываем тип содержимого — XML:

После сохранения созданного ресурса, по адресу «http://ваш_сайт/sitemap.xml» будет генерироваться карта сайта (при условии что настроено ЧПУ, иначе адрес к sitemap будет другим).

Если требуется вывести карту сайта без параметров «lastmod» или «priority» то создайте новый чанк (например, с именем GoogleSiteMapChank) и поместите в его содержимое только те параметры, которые вам нужны. По умолчанию он выглядит следующим образом:

<url> <loc>[[+url]]</loc> <lastmod>[[+date]]</lastmod> <changefreq>[[+update]]</changefreq> <priority>[[+priority]]</priority> </url>

Для сайтов, которые обновляются крайне редко, будет полезным оставить только параметр «loc», ведь поисковым машинам не обязательно знать, что страницы сайта обновляются редко.

Осталось в сниппет добавить параметр «itemTpl», передав ему название созданного чанка:

[[!GoogleSiteMap? &itemTpl=`GoogleSiteMapChank`]]

Можете проверять конечный результат — должно работать.

realadmin.ru

Modx REVO

Параметры сниппета

parents - ID родительских ресурсов через запятую. По умолчанию текущий.

resources - Список ID ресурсов (товаров) через запятую.

depth - Глубина поиска родителей. По умолчанию 1.

tpl - Имя чанка шаблона для вывода ресурса.

outerTpl - Имя чанка шаблона обертки вывода. Доступен только плейсхолдер [[+inner]].

className - Имя класса (объекта) элементов таблицы БД. По умолчанию "modResource".

packageName - Имя пакета элементов таблицы БД. Например: shop - будет запрошен класс по адресу "/core/components/shop/model/shop/shopcontent.class.php". Рекоммендуется использовать пакет MIGXDB (http://modx.com/extras/package/migx).

where - JSON строка для условия WHERE в SQL запросе. Пример: &where=`{"template":15}` (только поля ресурсов, без TV).

sortby - Поле для сортировки (только поля ресурсов, без TV). По умолчанию "menuindex". Для сортировки вразнобой использовать &sortby=`RAND()`.

sortdir - Направление сортировки. По умолчанию "ASC".

sortbyTV - Сортировка по TV. Указать имя TV.

sortdirTV - Направление сортировки по TV (ASC|DESC). По умолчанию "ASC";

sortbyTVType - Тип значения TV (string|integer). По умолчанию "string";

orderby - JSON строка сортировки. Пример: &orderby=`{"parent":"ASC","pagetitle":"ASC"}`

tvFilters - JSON строка фильтрации по ТВ. Пример: &tvFilters=`{"country":"Китай","producer":"Sony"}`. Другие примеры ниже.

includeTVs - Добавить плейсхолдеры значений TV для ресурсов (1|0). Префикс для TV: "tv.". Пример: [[+tv.image]]. По умолчанию = 0 (отключен).

includeTVList - Список имён TV, которые нужно добавить через запятую.

processTVs - Применять параметр "Параметры вывода" для TV.

processTVList - Список TV через запятую, для которых применять processTVs.

fromParentList - список полей через запятую, которые нужно добавить товарам от родителей. Например "pagetitle,image" - в чанке сниппета будут доступны плейсхолдеры [[+parent.pagetitle]] и [[+parent.image]] (TV). По умолчанию выключено.

addSubItemCount - В чанке сниппета будет доступен плейсхолдер [[+subitemcount]] - число дочерних ресурсов.

subItemCountWhere - JSON строка для условия WHERE в SQL запросе для подсчета дочерних элементов.

noResults - Текст, который будет выводиться, если по запросу ничего не найдено.

toPlaceholder - Имя плейсхолдера, в который нужно отправить результат работы сниппета. По умолчанию не используется.

totalVar - Имя плейсхолдера с общим количеством ресурсов. По умолчанию "total".

context - Контекст, из которого нужно вывести ресурсы. По умолчанию текущий.

activeParentSnippet - Сниппет для активного контейнера-ресурса - [[+activeParent_snippet]]. См. пример с меню ниже.

activeClass - Имя CSS-класса для активного ресурса. По умолчанию "active".

includeContent - Включать в выборку из БД значение поля "content" (1|0). По умолчанию выключено.

returnIDs - Возвращать только ID рессурсов (1|0). По умолчанию 0 (выключено).

useSmarty - Использовать в чанке шаблонизатор Smarty (1|0). По умолчанию 0 (выключено). Подробнее ниже.

debug - Режим отладки (1|0). В журнал ошибок будут писаться SQL запросы, полученные в сниппете. По умолчанию = 0 (отключен).

Параметры кэширования

gp_cache - Включить кэширование (1|0). По умолчанию выключено - 0.

cacheId - Идентификатор кэша. По умолчанию "gpCache".

Необязательные параметры кэширования

cache_key - Ключ кэша (название папки для файлов кэша). По умолчанию берется из настроек системы - cache_resource_key.

cache_handler - Обработчик кэширования. По умолчанию берется из настроек системы - cache_resource_handler (xPDOFileCache).

cache_expires - число секунд для кэширования. По умолчанию 0 (бесконечное).

Примеры фильтрации

Пример фильтрации по цене - больше и меньше: 

&tvFilters=`{"price:>=,<=:AND":[200,500]}`

Пример с поиском подстроки: 

&tvFilters=`{"param:LIKE":"%черный%"}`

Пример для поиска по стандартным полям: 

&where=`{"temlate:=:AND":"2","pagetitle:LIKE:AND":"%черный%"}`

Поиск по множественным значениям: 

&tvFilters=`{"param:LIKE:OR":["%черный%","%синий%","%зеленый%"]}`

Плейсхолдеры в чанке "tpl"

idx - Индекс строки от нуля.

first - (1|0) - Первая строка. Если первая строка, то выведется "1", если нет - "0".

last - (1|0) - Последняя строка.

odd - (1|0) - Четная строка.

activeClass - Класс активного ресурса.

classnames - Все CSS-классы одной строкой.

active - (1|0) - активный ресурс.

activeParent - ID активного родителя.

activeParent_snippet - Вывод сниппета из параметра &activeParentSnippet.

tv.любойTV - TV параметры.

parent.полеОтРодителя - поля от роделя (в т.ч. TV).

Пример вызова

[[!getProducts? &parents=`5` &includeTVs=`1` &includeTVList=`price,image,producer,country` &limit=`10` &tpl=`product` &where=`{"template":15}` &tvFilters=`{"country":"Китай","producer":"Sony"}` ]]

Пример использования с getPage:

[[!getPage? &cache=`1` &elementClass=`modSnippet` &element=`getProducts` &parents=`5` &includeTVs=`1` &includeTVList=`price,image,producer,country` &limit=`10` &tpl=`product` &where=`{"template":15}` &tvFilters=`{"country":"Китай","producer":"Sony"}` &pageFirstTpl=` <li><a [[+classes]] href="[[+href]]">Первая</a></li> ` &pageLastTpl=` <li><a [[+classes]] href="[[+href]]">Последняя</a></li> ` ]] <br /> <ul> [[!+page.nav]] </ul>

Пример вывода элементов из таблицы "modx_shop_content"(см. http://modx-shopkeeper.ru/documentation/modx-revolution/tovaryi-iz-otdelnoj-tabliczyi.html):

[[!getPage? &cache=`1` &elementClass=`modSnippet` &element=`getProducts` &className=`shopContent` &packageName=`shop` &limit=`10` &tpl=`product` &where=`{"template":15}` &pageFirstTpl=` <li><a [[+classes]] href="[[+href]]">Первая</a></li> ` &pageLastTpl=` <li><a [[+classes]] href="[[+href]]">Последняя</a></li> ` ]] <br /> <ul> [[!+page.nav]] </ul>

Пример вывода с кэшированием, кэшируется для всех страниц:

[[getProducts@top_products? &gp_cache=`1` &cacheId=`top_products` ]]

Пример вывода с кэшированием, кэшируется для всех страниц + учитывается валюта:

[[!getProducts@top_products? &gp_cache=`1` &cacheId=`top_products_[[!+shk_currency]]` ]]

Пример вывода многоуровневого меню (замена Wayfinder). Подуровни выводятся только для текущей категории:

[[getProducts? &parents=`4` &where=`{"hidemenu":0,"template:<>":5}` &tpl=`menuRowTpl` &addSubItemCount=`1` &activeParentSnippet=`getProducts?parents=[[+id]]&tpl=menuRowTpl2` ]]

menuRowTpl:

<li> <a href="[[~[[+id]]]]">[[+pagetitle]] ([[+subitemcount]])</a> [[+active:is=`1`:then=` <ul> [[+activeParent_snippet]] </ul> `:else=``]] </li>

menuRowTpl2:

<li> <a href="[[~[[+id]]]]">[[+pagetitle]]</a> </li>

sergst88modx.blogspot.com


Prostoy-Site | Все права защищены © 2018 | Карта сайта