Карта сайта - это, обычно, страница, на которой перечислены все страницы сайта в виде дерева. Понятно, что в некоторых случаях это может быть не дерево, иногда в карте сайта будут добавляться новости, элементы каталога товаров и т.п. Но изначально это все таки дерево страниц, на которые так или иначе всегда можно попасть через меню или другие элементы навигации.
Самый простой способ вывести дерево страниц - это вывести меню сайта с простейшим дизайном в виде буллетированного списка. Можно за основу взять уже имеющееся в системе меню, можно объединить несколько меню (главное и вспомогательное, например, выводя из друг за другом). А можно в админзоне создать отдельный элемент типа "меню" (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 (находится в закрытой зоне) карта сайта является стандартным блоком, который очень просто подключается на этапе сборки заготовки.