воскресенье, 1 сентября 2013 г.

Хитрая карта сайта в UMI.CMS

Как известно, в UMI.CMS есть стандартный метод для вывода карты сайта и обычно нет никакой необходимости изобретать велосипед. Но есть одна оговорочка — стандартный content/sitemap выводит только те страницы, у которых стоит галочка «показывать в меню».

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




Проблема


Рассмотрим простой пример:

На сайте есть два меню — основное и меню услуг. Все страницы в меню услуг являются подстраничками раздела «Услуги», который мы не отображаем в нашем основном меню, как раз с помощью снятия галки «показывать в меню».

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

Её решение


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

Основным минусом такого решения является то, что сначала в карте сайта будут идти страницы, а затем ленты новостей.

В своих выборках usel я исключил страницы, закрытые от индексации. Если вы не планируете этого делать, то можно обойтись одним usel, у которого тэг <target result="pages"/> указан без вложенного тега <type/>, тогда будут выбраны вообще все страницы, но теги <property> и <extened> работать не будут.


USEL


Файлы usel имеют следующее содержание:

Для новостей:

Для страниц:

Чтобы страницы, которые не должны индексироваться не попадали в карту сайта, которая в основном делается именно для поискового робота добавляем в usel: <property name="robots_deny" value="1" mode="not"/>

 Шаблоны


Создадим страницу http://ваш_сайт/sitemap

И добавим в файл xslt/modules/content/content.xsl шаблон для этой страницы (не забудьте подставить свой @pageId):



А в файл xsl/module/content/sitemap.xsl добавим шаблоны для вывода карты сайта вложенным списком:



Пояснять код шаблонов не буду, он предельно понятен.

Комментариев нет:

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