Методы для работы с информацией о странице (pageInfo)

Router::getPageInfoById($pageId)

Метод применяется для извлечения информации о странице по ее номеру:

  • Возвращает массив с информацией о странице (полный список элементов массива см. в описании метода Router::getCurrentPageInfo())
  • $pageId — номер страницы.

Для псевдостраниц этот метод не годится. Для псевдостраниц применяйте метод Router::getPageInfoByUrl().

Router::getPageInfoByUrl($url)

Универсальный метод для извлечения информации о странице, в том числе, псевдостраницы.

  • Возвращает массив с информацией о странице (полный список элементов массива см. в описании метода Router::getCurrentPageInfo())
  • $url — URL страницы. Может быть в любом виде: в параметрическом или человекопонятном, в абсолютном или относительно главной страницы.

.tpl
<?php
    $url = '?page=2&block=4&pick[1]=85867';
    $pageInfo = Router::getPageInfoByUrl($url);
?>

Если вам нужно извлечь информацию о текущей странице, применяйте метод Router::getCurrentPageInfo().

Router::getCurrentPageInfo()

  • Возвращает массив с информацией о текущей странице с учетом изменений, сделанных с помощью метода Router::addCurrentPageInfo().
Данный метод можно использовать, например, для создания заголовка страницы:
<h1><?=Router::getCurrentPageInfo()['name']?></h1>

Заголовок можно создавать и во корневом шаблоне, но зачем вводить новое поле, когда уже есть готовое решение! А можно совместить оба способа, то есть, когда отсутствует данное для заголовка, использовать элемент name из массива информации о странице.

Элемент name используется также в хлебных крошках.

Пример массива, возвращаемого методом Router::getCurrentPageInfo()
[
    'id'                  => 4,
    'parent-page-id'      => 1,
    'parent-page-is-adopted' => 0,
    'outer-block-id'      => 26,
    'main-block-id'       => null,
    'page-is-hidden'      => 0,
    'alias'               => 'karaoke-klub-vip-klassa',
    'lastmod'             => '2016-03-09 09:03:32',
    'changefreq'          => 'weekly',
    'priority'            => null,
    # Эти элементы можно изменять с помощью метода Router::addCurrentPageInfo()
    'name'                => 'Караоке клуб VIP класса',
    'title'               => 'Караоке клуб VIP класса',
    'keywords'            => '',
    'description'         => '',
    # Добавляются для псевдостраниц:
    'base-page-name'         => 'Фотогалерея',
    'block'                  => 94,
    'is-pseudopage''           => 1,
    'level'                  => 1,
    'parent-key'             => '',
    'parent-phref'           => '?page=4',
    'phref'                  => '?page=4&block=95&p[10]=1',
    'pseudo-pages-title-prefix' => '',
    'rec' => 1
]

Router::addCurrentPageInfo($infos, $unconditionally=null)

С помощью метода Router::addCurrentPageInfo() можно "на лету" записать/заменить информацию о текущей странице.

  • $infos — массив с информацией о странице (полный список элементов массива см. в описании метода Router::getCurrentPageInfo())

  • $unconditionally — заменить информацию безусловно, даже если она была введена вручную в разделе Настройки страницы. По умолчанию настройки страницы будут устанавливаться только в том случае, если соответствующее данное не было введено вручную.

.tpl
<?php
    Router::addCurrentPageInfo(
        [
            'title'       => 'Новый титул страницы',
            'keywords'    => 'Новые ключевые слова страницы',
            'description' => 'Новое описание страницы ',
        ],
        true
    );    
?>

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

Router::convertUrlToPartFreePhref($url)

Метод для получения параметрического URL относительно главной страницы из произвольного URL .

  • Возвращает относительный параметрический URL без параметра part.
  • $url — URL страницы может быть в любом виде: в параметрическом или человекопонятном, в абсолютном или относительно главной страницы.


См. также