UMI.CMS - термины

API UMI.CMS предоставляет ООП-классы для работы с базой данных, с файлами, другими модулями, импортом/экспортом XML.

Все сущности, с которыми мы взаимодействуем в UMI.CMS, представляют собой объекты. Несколько особняком стоят страницы в дереве сайта. Они, как двуликий Янус, являют собой и объекты, и элементы иерархии. Все объекты создаются по предопределенным шаблонам - типам данных.

Тип данных

Это шаблон, по которому создаются все объекты в UMI.CMS. Тип данных описывает, какие свойства будут доступны у объекта, созданного по этому типу данных. Типы данных могут наследоваться, в этом случае дочерний тип данных наследует все поля родительского. Через API непосредственно управляется классами umiObjectTypesCollection и umiObjectType.

Все существующие в данный момент типы данных можно увидеть в дереве иерархии в модуле "Шаблоны данных".

Набор характеристик типа данных описывается сущностями, которые называются "Поле"

Поле

Это сущность, которую использует тип данных для описания набора свойств своих объектов и предназначены для хранения информации об объекте. Сам по себе тип данных и поля, находящиеся в его составе, не содержат значений свойств, которые существуют у объектов, а только описывает их поведение. Управление полями реализовано в модуле "шаблоны данных". В UMI.API управление полями реализовано через классы umiField, umiFieldsGroup и umiFieldsCollection.

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

Группа полей — это способ объединять поля по какому-либо принципу.
Группы полей наследуются по принципу мягкой ссылки — изменения в группах для подтипов не повлечет изменений в родительском типе.

Объект

Объект - набор данных, созданный по типу данных. Каждый объект неразрывно связан со своим типом данных, который управляет набором свойств этого объекта. Если у объекта нету свойств, то из аттрибутов у него есть только id объекта, название и id пользователя, которые создал этот объект. Все созданные поля в типе данных, которому принадлежит этот объект тут же превращяются в свойства этого объекта. Сам объект никак не привязан к структуре сайта. Объекты в системе являются пользователями, заказами в магазине и т.п.. Реализуется через классы umiObject и umiObjectCollection.

Свойство

Это свойство объекта (соответсвует полю в типе данных), которое содержит некое значение. Значение, которое содержит свойство, определяется полем, которому оно принадлежит. Работа со свойствами реализуется через класс umiObjectProperty. Но напрямую с ним работать бессмыслено, потому что свойство всегда привязано к какому-либо объекту. Доступ к свойствам обеспечивают методы getValue()/setValue() классов umiObject и umiHierarchyElement.

Элемент

Это страница в дереве сайта. Любая страница, будь то страница контента, новость, либо объект каталога реализуется через эту сущность. Элемент включает в себя аттрибуты:

  • Id элемента
  • Псевдостатический адрес
  • Id родительского элемента
  • Id шаблона дизайна
  • Id домена, в котором расположен элемент
  • Id языка, к которому принадлежит элемент
  • Id типа в иерархии
  • Ссылку на объект, который является источником данных этого элемента

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

Тип в иерархии

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