Файл menu.xml – это ядро сайта. Он содержит перечень всех страниц, шаблонов и меню сайта. Если страница не описана в этом файле, Система считает что такая страница не существует (даже если ее содержимое есть на диске или в базе данных). Заготовка файла menu.xml, поставляемая в инсталляционном пакете выглядит примерно так:
<?xml version="1.0" encoding="windows-1251" ?>
<CONTROL-DOCUMENT>
<DEFAULT>
<FOLDER title="Новая папка" description="" assign="" />
<LINK title="Новая ссылка">
<URL editable="true">
</URL>
<ADMIN-URL editable="false">
</ADMIN-URL>
</LINK>
<NODE title="Новый документ" assign="">
<ALIAS title="Псевдоним страницы" editable="true">
</ALIAS>
<TEMPLATE title="Шаблон фронтзоны" editable="true" type="front-templates">
internal
</TEMPLATE>
<ADMIN_TEMPLATE title="Шаблон админзоны" editable="false" type="back-templates">
page_full_edit
</ADMIN_TEMPLATE>
</NODE>
</DEFAULT>
<DECLARATION>
<BACK-TEMPLATES>
<ITEM value="page_full_edit" />
<ITEM value="page_edit" />
<ITEM value="page_simple_edit" />
<ITEM value="page_viewer" />
<ITEM value="variable_edit" />
</BACK-TEMPLATES>
<BOOLEAN>
<ITEM value="yes" />
<ITEM value="no" />
</BOOLEAN>
<FRONT-TEMPLATES>
<ITEM value="default" />
<ITEM value="internal" />
</FRONT-TEMPLATES>
</DECLARATION>
<CMS id=cms title="Управление сайтом" description="Управление сайтом" assign="cms" locked="">
<FOLDER id=content title="Контентные страницы" description="" assign="content" locked="">
</FOLDER>
<FOLDER id=special title="Служебные функции" description="" assign="special">
</FOLDER>
<FOLDER id=hidden title="Спец страницы" description="" assign="hidden">
<NODE id=1 title="Первая страница" noindex="">
<ALIAS title="Псевдоним страницы" editable="false" type="">
index
</ALIAS>
<TEMPLATE title="Шаблон фронтзоны" editable="true" type="front-templates">
default
</TEMPLATE>
<ADMIN_TEMPLATE title="Шаблон админзоны" editable="false" type="back-templates">
page_full_edit
</ADMIN_TEMPLATE>
</NODE>
</FOLDER>
</CMS>
</CONTROL-DOCUMENT>
Основные блоки отмечены здесь разными цветами для того, чтобы можно было проще ориентироваться.
Раздел <default>… предназначен для описания заготовок элементов, которые будут создаваться редактором сайта. При описании сайта используется три типа элементов: папка (folder), страница (node) и ссылка (link). Когда редактор в админзоне создает новый элемент, соответствующий раздел будет скопирован из и помещен в нужное место, после чего ему будет присвоен уникальный id (идентификатор) и заполнен атрибут assign (назначение). Поэтому, при описании этих заготовок id и assign нужно оставить пустыми.
Раздел <declaration>… используется как перечень допустимых значений свойства какого-либо элемента, вводить которые редактору через обычную строку неудобно и чревато ошибками. Используемый список значений для тэга определяется через атрибут type.
Любая страница всегда имеет как минимум два свойства – это шаблон для фронтзоны (template) и шаблон для админзоны (admin_template). Чтобы добавить на сайт новый шаблон для фронтзоны нужно просто вставить новый тэг <item value ="название_шаблона"/> в тэг .
Раздел <cms>… определяет те элементы, которые редактор так или иначе использует при работе в админзоне. Этот раздел может содержать в себе произвольное количество папок (folder), страниц (node) и ссылок (node-pointer). Все они группируются в три папки верхнего уровня, которые отличаются друг от друга своим назначением, которое определяется через атрибут assign. Таких назначений три: content, special, hidden.
Папка с assign="content" – это обычная, видимая редактором и свободно им изменяемая ветка, в которой в основном и производится работа по изменению структуры сайта, то есть добавлению страниц, их переименованию и удалению.
Папка с assign="special" – это специальная папка, в которую разработчик размещает страницы управления справочниками и служебные страницы, например управление библиотекой файлов, новостной лентой или резервными копиями.
Папка с assign="hidden" – это невидимая для редактора папка. Она используется для того, чтобы разработчик сайта мог разместить в ней страницы, необходимые в работе, но которые не только нельзя изменять, но и о существовании которых редактору лучше не знать (чтобы не отвлекать его). В частности, сюда помещаются разные системные страницы вроде сообщения об ошибке «Страница не найдена» (404 ошибка), поисковой страницы, форм обратной связи и т.п.
В данном примере показано, что главная страница сайта не должна быть видна редактору (она помещена в папку с assign="hidden"), и поэтому ее свойства могут быть изменены только разработчиком.
Элементы, и и их параметры (вложенные тэги) имеют набор атрибутов, некоторые из которых могут в дальнейшем редактироваться через админзону, а некоторые изменяются только разработчиком или самой системой. Для удобства их описания сведены в таблицу.