PageManager


PageManager получает опубликованные страницы независимо от страницы текущего HTTP-запроса.

Поддерживает

  • получение страницы по URL и языку
  • использование текущего языка CMS
  • проверку поддержки свободной ссылки
  • получение переводов страницы
  • получение языковых вариантов главной страницы
  • работу с основной или переданной базой данных

Быстрый старт

php
$pageManager = new PageManager();
$page = $pageManager->getPublishedByUrl('contacts');

if ($page === null) {
    return;
}

$title = $page['title'];
$content = $page['content'];

Получение страницы

getPublishedByUrl(string $url, bool $freeLink = false, ?string $language = null): ?array

Возвращает опубликованную страницу по её URL и языку:

php
$page = (new PageManager())->getPublishedByUrl('contacts');

Начальные и конечные символы / удаляются:

php
$page = (new PageManager())->getPublishedByUrl('/contacts/');

Для получения страницы определённого языка передайте его код третьим параметром:

php
$page = (new PageManager())->getPublishedByUrl('contacts', false, 'en');

Если язык не передан, используется текущий язык CMS. Если текущий язык недоступен, используется язык сайта по умолчанию.

Параметр Тип Описание
$url string URL страницы без языкового префикса.
$freeLink bool Требовать непустое значение free_link.
$language string|null Код языка страницы.

Если URL пустой или подходящая страница не найдена, метод возвращает null.

Данные страницы возвращаются без дополнительного преобразования полей meta и seo.

Свободная ссылка

Чтобы получить только страницу со свободной ссылкой, передайте true вторым параметром:

php
$page = (new PageManager())->getPublishedByUrl('developer', true);

Поиск также учитывает выбранный язык.

Переводы страницы

getPublishedTranslations(string $translationKey): array

Возвращает опубликованные переводы, объединённые одним значением translation_key:

php
$pageManager = new PageManager();
$page = $pageManager->getPublishedByUrl('contacts');
$translations = $page === null ? [] : $pageManager->getPublishedTranslations((string) ($page['translation_key'] ?? ''));

Каждый элемент содержит:

Поле Описание
id Идентификатор страницы.
url URL страницы без языкового префикса.
language Код языка.
template Название шаблона.
seo SEO-настройки в виде массива.

Если ключ пустой или имеет неверный формат, метод возвращает пустой массив.

Языковые варианты главной страницы

getMainPageVersions(): array

Возвращает сохранённые языковые варианты главной страницы:

php
$versions = (new PageManager())->getMainPageVersions();

Каждый элемент содержит id, language и seo. Поле seo возвращается в виде массива.

База данных

__construct(?Database $db = null)

Без аргументов менеджер использует основной объект базы данных CMS:

php
$pageManager = new PageManager();

При необходимости можно передать другой экземпляр Database:

php
$pageManager = new PageManager($database);

Отличие от PageData

PageManager используется для поиска произвольной страницы и получения её языковых вариантов.

PageData содержит данные страницы или записи, уже определённой CMS для текущего запроса.

Важные замечания

  • getPublishedByUrl() и getPublishedTranslations() возвращают только страницы со статусом publish
  • пустой URL возвращает null
  • отсутствующая страница возвращает null
  • getPublishedByUrl() возвращает поля meta и seo без преобразования
  • getPublishedTranslations() и getMainPageVersions() преобразуют поле seo в массив
  • получение страницы по идентификатору класс не поддерживает
  • для данных текущей страницы используйте PageData