Описание
Класс иерархической модели данных, который предоставляет доступ к определенной странице сайта и содержит методы для получения и изменения ее свойств и атрибутов.
Каждая страница сайта (экземпляр umiHierarchyElement
) имеет набор атрибутов (псевдостатический адрес, активность, видимость в меню и т.д.), которые определяют ее положение и значимость в структуре сайта, а так же набор свойств из источника данных определенного типа (umiObject). У нескольких страниц сайта может быть указан общий источник данных, тогда такие страницы называются "виртуальные копии". Эти страницы могут иметь разные атрибуты, но свойства у них будут общие.
Важно
Класс umiHierarchyElement является членом коллекции umiHierarchy
, поэтому получать экземпляр класса необходимо именно у нее, используя метод umiHierarchy::getElement()
Пример 21. Получить необходимые свойства и атрибуты у текущей страницы
<?php
// получаем id текущей страницы
$current_page_id = cmsController::getInstance()->getCurrentElementId();
// получаем экземпляр коллекции
$hierarchy = umiHierarchy::getInstance();
// получаем umiHierarchyElement, либо false, если страница не существует
$page = $hierarchy->getElement($current_page_id);
if (!$page instanceof umiHierarchyElement) {
// выбрасываем исключение
throw new publicException(getLabel('error-page-does-not-exist'));
}
// получаем атрибуты страницы
// можно запрашивать через соответствующие методы:
$active = $page->getIsActive();// активность
$parent_id = $page->getParentId();// id родительской страницы
// а можно и более удобно, используя геттеры:
$id = $page->id;// id текущей страницы
$name = $page->name;// имя текущей страницы
...
// получаем свойства страницы
$content = $page->getValue('content');
$title = $page->getValue('title');
$price = $page->getValue('price');
// или используя геттеры:
$h1 = $page->header;
$description = $page->description;
?>
Пример 22. Установить необходимые свойства и атрибуты у какой-либо страницы
<?php
$page_id = 1; // заранее полученный идентификатор страницы
// получаем экземпляр коллекции
$hierarchy = umiHierarchy::getInstance();
// получаем umiHierarchyElement, либо false, если страница не существует
$page = $hierarchy->getElement($page_id);
if (!$page instanceof umiHierarchyElement) {
// выбрасываем исключение
throw new publicException(getLabel('error-page-does-not-exist'));
}
// записываем атрибуты страницы
// можно через соответствующие методы:
$page->setName("New page name");// изменяем имя страницы
$page->setIsActive(true); // изменяем активность
...
// а можно и более удобно, используя сеттеры:
$page->altName = 'mypage';
$page->isVisible = true;
// записываем свойства страницы
$page->setValue('content', 'Hello world!');
$page->setValue('price', 456);
// или используя сеттеры:
$page->description = 'My page description';
// чтобы применить совершенные изменения, необходимо вызвать
$page->commit();
?>