menu.xml


Файл 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"), и поэтому ее свойства могут быть изменены только разработчиком.

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