для определения наборов значений.
Пример:
В файле menu.xml в секции <default> определяется заготовка для элемента node. Модифицируем её, добавив те свойства, которые нам нужны.
<node assign="" id="" title="Новый документ">
...
<image-title editable="true" title="Графический заголовок" type="image-titles">
o.gif
</image-title>
</node>
В данном примере добавлено свойство image-title, признак editable="true" позволяет редактировать данное свойство редактору из админзоны, type определяет перечень допустимых значений для данного свойства. В этом примере значения будут браться из секции image-titles и по умолчанию при создании новой страницы будет подставляться значение "o.gif".
image-titles определяются в секции <declaration>:
<declaration>
<image-titles>
<item value="o.gif"/>
<item value="head_download.gif"/>
<item value="head_login.gif"/>
...
</image-titles>
</declaration>
Решение №2 (реализовано с версии 4.22)
В файле Data/entities.xml определяется сущность со служебным идентификатором pageproperty, например:
<entity id="pageproperty" name="Свойства страницы">
<field id="announce" type="string" sortas="literal" name="Анонс"/>
<field id="picture" type="image" sortas="literal" name="Картинка"/>
</entity>
В тулбарах редакторов страниц автоматически появится кнопка, при нажатии на которую редактор получит возможность редактирования дополнительных свойств страницы.
Разработчик может использовать дополнительные свойства страниц стандартным образом через макроподстановку $NodeProperty[]$.
Сложная задача
Требуется для каждого шаблона страниц на сайте использовать различное количество полей в дополнительных свойствах страниц.
Решение (реализовано с версии 4.22)
Создаем несколько сущностей, по одной на каждый или на несколько шаблонов страниц, которые определены разработчиком в системе. В папке Data заводится справочник с предопределенным именем entityfortemplate. В нем необходимо создать записи, связывающие сущности для дополнительных свойств страниц и шаблоны. Поля данного справочника: id (содержит имя шаблона) и entity (содержит имя сущности). Если связующий справочник не планируется редактировать через админзону его можно создать в упрощенной форме, то есть только с двумя нужными нам полями:
id::internal1::entity::pageproperty1
id::internal2::entity::pageproperty2
В остальном решение полностью аналогично в реализации варианту с одной сущностью для описания дополнительных свойств на весь сайт.
Если система не найдет файла entityfortemplate или в нем не найдется шаблон, то будет использоваться имя сущности по умолчанию (pageproperty). Если такой сущности в entities.xml не будет найдено, система отключит возможность редактирования расширенных свойств в админзоне.
Стоит отметить, что все расширенные свойства для всех шаблонов (пусть даже и описываемые различными сущностями) будут по-прежнему храниться в файле pageproperties.dat.