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

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «'''Актуально для версии 21''' == Задача == Сохранять псевдостатические адреса страниц в прои…»)
 
 
Строка 3: Строка 3:
 
== Задача ==
 
== Задача ==
 
Сохранять псевдостатические адреса страниц в произвольном виде.<br>
 
Сохранять псевдостатические адреса страниц в произвольном виде.<br>
Например необходимо сохранить страницу с адресом site.ru/page.html, но система автоматически преобразует такой адрес в site.ru/page-html.
+
Например: необходимо сохранить страницу с адресом site.ru/page.html, но система автоматически преобразует такой адрес в site.ru/page-html.
  
 
== Решение ==
 
== Решение ==

Текущая версия на 13:47, 29 мая 2020

Актуально для версии 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", то это значение сохранится без преобразования и страница будет открываться по данному адресу.