PageManager
PageManager получает опубликованные страницы независимо от страницы текущего HTTP-запроса.Поддерживает
- получение страницы по URL и языку
- использование текущего языка CMS
- проверку поддержки свободной ссылки
- получение переводов страницы
- получение языковых вариантов главной страницы
- работу с основной или переданной базой данных
Быстрый старт
$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 и языку:
$page = (new PageManager())->getPublishedByUrl('contacts');Начальные и конечные символы / удаляются:
$page = (new PageManager())->getPublishedByUrl('/contacts/');Для получения страницы определённого языка передайте его код третьим параметром:
$page = (new PageManager())->getPublishedByUrl('contacts', false, 'en');Если язык не передан, используется текущий язык CMS. Если текущий язык недоступен, используется язык сайта по умолчанию.
| Параметр | Тип | Описание |
|---|---|---|
$url |
string |
URL страницы без языкового префикса. |
$freeLink |
bool |
Требовать непустое значение free_link. |
$language |
string|null |
Код языка страницы. |
Если URL пустой или подходящая страница не найдена, метод возвращает null.
Данные страницы возвращаются без дополнительного преобразования полей meta и seo.
Свободная ссылка
Чтобы получить только страницу со свободной ссылкой, передайте true вторым параметром:
$page = (new PageManager())->getPublishedByUrl('developer', true);Поиск также учитывает выбранный язык.
Переводы страницы
getPublishedTranslations(string $translationKey): array
Возвращает опубликованные переводы, объединённые одним значением translation_key:
$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
Возвращает сохранённые языковые варианты главной страницы:
$versions = (new PageManager())->getMainPageVersions();Каждый элемент содержит id, language и seo. Поле seo возвращается в виде массива.
База данных
__construct(?Database $db = null)
Без аргументов менеджер использует основной объект базы данных CMS:
$pageManager = new PageManager();При необходимости можно передать другой экземпляр Database:
$pageManager = new PageManager($database);Отличие от PageData
PageManager используется для поиска произвольной страницы и получения её языковых вариантов.
PageData содержит данные страницы или записи, уже определённой CMS для текущего запроса.
Важные замечания
getPublishedByUrl()иgetPublishedTranslations()возвращают только страницы со статусомpublish- пустой URL возвращает
null - отсутствующая страница возвращает
null getPublishedByUrl()возвращает поляmetaиseoбез преобразованияgetPublishedTranslations()иgetMainPageVersions()преобразуют полеseoв массив- получение страницы по идентификатору класс не поддерживает
- для данных текущей страницы используйте
PageData