Страницы

Страницы это расширенные объекты, которые являются частью структуры сайта. Они сохраняют все возможности обычных объектов и дают инструменты для управления их положением и состоянием в дереве сайта.

Попробуем получить какую-нибудь страницу по адресу и отредактировать ее свойство.

<?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/"