Кастомизация сохранения псевдостатических адресов страниц

Материал из Umicms
Версия от 13:47, 29 мая 2020; Aposio (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

Актуально для версии 21

Задача

Сохранять псевдостатические адреса страниц в произвольном виде.
Например: необходимо сохранить страницу с адресом site.ru/page.html, но система автоматически преобразует такой адрес в site.ru/page-html.

Решение

1. Создаем файл classes/components/content/custom_events.php, регистрируем в нем слушателя события:

<?php

new umiEventListener('systemModifyElement', 'content', 'changeAltName');

2. В файле classes/components/content/customMacros.php описываем метод, который будет изменять псевдостатический адрес именно на тот, который мы указали:

public function changeAltName(iUmiEventPoint $event) {
    if ($event->getMode() == 'after') {
        if (is_string(getRequest('alt-name'))) {
            $altName = getRequest('alt-name') !== '' ? getRequest('alt-name') : getRequest('name');
            $element = $event->getRef('element');
            $element->setAltName($altName, false);
            $element->commit();
        }
    }
}

Теперь если в поле страницы "Псевдостатический адрес" написать "page.html", то это значение сохранится без преобразования и страница будет открываться по данному адресу.