Как сделать карту сайта


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

Самый простой способ вывести дерево страниц - это вывести меню сайта с простейшим дизайном в виде буллетированного списка. Можно за основу взять уже имеющееся в системе меню, можно объединить несколько меню (главное и вспомогательное, например, выводя из друг за другом). А можно в админзоне создать отдельный элемент типа "меню" (folder assign="menu") и его уже вывести на странице. Но это не очень удобно, т.к. при добавлении новой страницы на сайт нужно будет его не только в какое-то меню поместить, но и в карту сайта добавить.

Поэтому типовая схема, применяемая нами на всех проектах, такова:

  • создайте в дереве сайта страницу с псевдонимом sitemap (псевдоним можете поменять если нужно на что угодно другое);
  • в теле страницы напишите вызов макроса Menu: $Menu[menuid: mainmenu; design: sitemap]$. Понятно, что menuid должен указывать на существующее меню, используемое как источник данных;
  • в файле menu_design.xml добавляется дизайн вида:

 <menudesign id="sitemap">
  <header>
   <![CDATA[<ul>]]>
  </header>
  <delimiter/>
  <footer>
   <![CDATA[</ul>]]>
  </footer>
  <item>
   <level id="6000" number="1..">
    <usual>
     <![CDATA[<A HREF="/$Attribute:alias$">$Attribute:title$</A><UL>$Children$</UL>]]>
    </usual>
    <active>
     <![CDATA[<A HREF="/$Attribute:alias$">$Attribute:title$</A><UL>$Children$</UL>]]>
    </active>
   </level>
  </item>
 </menudesign>

В данном дизайне, как видно, просто в виде буллетированного списка будет выведена вся структура меню, заданного в макросе через menuid. Если нужно добавить еще одно меню к выводу - на странице sitemap можно задать еще один или несколько макросов Menu. Если нужно включить, например, два уровня каталога товаров - в вышеприведенном дизайне поставьте вывод CatalogTree или CatalogFullTree с условием (condition) проверки по $Attribute:alias$, чтобы выводить это вместо ссылки на страницу с псевдонимом "catalog", например. И так далее.

В генераторе сайтов-заготовок Tube (находится в закрытой зоне) карта сайта является стандартным блоком, который очень просто подключается на этапе сборки заготовки.