Страницы это расширенные объекты, которые являются частью структуры сайта. Они сохраняют все возможности обычных объектов и дают инструменты для управления их положением и состоянием в дереве сайта.
Попробуем получить какую-нибудь страницу по адресу и отредактировать ее свойство.
<?php
header("Content-type: text/html; charset=utf-8");
include "standalone.php";
/*
Документация: работа со страницами. Получение старницы, редактирование ее свойств
*/
$hierarchy = umiHierarchy::getInstance();
$elementPath = "/market/";
//Получим id страницы по ее url'у
$elementId = $hierarchy->getIdByPath($elementPath);
if($elementId === false) {
echo "Нет страницы с таким адресом.";
}
//Получим экземпляр страницы через ее id
$element = $hierarchy->getElement($elementId);
//Проверим, что мы получили правильный результат
if($element instanceof umiHierarchyElement) {
//Покажем заголовок страницы
echo "Мы получили страницу с заголовком: \"", $element->getValue("h1"), "\"<br />\n";
//Изменим название и заголовок страницы
$element->setName("Барахолка");
$element->setValue("h1", "Барахолка");
$element->commit(); //Подтвердим внесенные изменения
//Новый заголовок
echo "Теперь заголовок такой: \"", $element->getValue("h1"), "\"<br />\n";
} else {
echo "Не удалось получить страницу.";
}
?>
При первом запуске мы увидим заголовок страницы, а на второй строке измененный заголовок.
Мы получили страницу с заголовком: "Каталог товаров"
Теперь заголовок такой: "Барахолка"
Можно запустить скрипт второй раз, чтобы убедиться, что данные действительно сохраняются.
Мы получили страницу с заголовком: "Барахолка"
Теперь заголовок такой: "Барахолка"
Еще один важный момент при работе с структурой сайта - создание новых страниц различного типа. Рассмотрим эту возможность на примере создания новой новости.
<?php
header("Content-type: text/html; charset=utf-8");
include "standalone.php";
/*
Документация: работа со страницами. Создание новой страницы, редактирование ее свойств.
*/
//Определим свойства страницы, которую будем создавать
$newElementName = "Новость про сигареты";
$newElementAltName = "about_cigi";
$newElementAnons = <<<ANONS
<p>Анонс новости</p>
ANONS;
$newElementContent = <<<CONTENT
<p>Текст новости</p>
<p>Текст новости</p>
<p>Текст новости</p>
<p>Текст новости</p>
CONTENT;
$newElementSubjects = Array("Табачный бизнес", "Особое мнение");
//Получим иерархический типа страницы - "Новость"
$hierarchyTypes = umiHierarchyTypesCollection::getInstance();
$hierarchyType = $hierarchyTypes->getTypeByName("news", "item");
$hierarchyTypeId = $hierarchyType->getId();
$hierarchy = umiHierarchy::getInstance();
//Получим id родительской страницы
$parentElementId = $hierarchy->getIdByPath("/vse_novosti/novosti_ekonomiki/");
//add new element
$newElementId = $hierarchy->addElement($parentElementId, $hierarchyTypeId, $newElementName, $newElementAltName);
if($newElementId === false) {
echo "Не удалось создать новую страницу";
}
//Установим права на страницу в состояние "по умолчанию"
$permissions = permissionsCollection::getInstance();
$permissions->setDefaultPermissions($newElementId);
//Получим экземпляр страницы
$newElement = $hierarchy->getElement($newElementId);
if($newElement instanceof umiHierarchyElement) {
//Заполним новую страницу свойствами
$newElement->setValue("h1", $newElementName);
$newElement->setValue("anons", $newElementAnons);
$newElement->setValue("content", $newElementContent);
$newElement->setValue("subjects", $newElementSubjects);
$newElement->setValue("publish_time", time()); //Время публикации - сейчас
//Укажем, что страница является активной
$newElement->setIsActive(true);
//Подтвердим внесенные изменения
$newElement->commit();
//Покажем адрес новой страницы
echo "Успешно создана страница с адресом: \"", $hierarchy->getPathById($newElementId), "\"";
} else {
echo "Не удалось получить экземпляр страницы #{$newElementId}.";
}
?>
В результате, который отдаст скрипт будет указан адрес созданной новости.
Успешно создана страница с адресом: "/vse_novosti/novosti_ekonomiki/about_cigi/"