Выбор макроса по содержанию url
Материал из Umicms
Задача:
Необходимо выводить с использованием стандартного макроса, но формировать от конкретного раздела, в зависимости от страницы, на которой находится посетитель.
Решение:
Добавим макрос, который будет принимать единственное значение - режим работы. Это добавит некоторую универсальность.
Как подключать кастомные макросы Вы можете почитать в другой статье http://wiki.umisoft.ru/Подключение_кастомных_макросов_и_событий_для_модулей
Пример: Пусть наш макрос будет называться select Тогда его вызов примет вид %custom select(menu)%
public function select($element) { //$url = getServer('QUERY_STRING'); $url = $_SERVER['QUERY_STRING']; switch ($element) { case 'menu': if (strpos($url, 'my_page1/') && strpos($url, 'page11/page12')==false ) { $res = "%content menu('default', 2, ''id_страницы'')%"; } elseif (strpos($url, 'my_page2/') && strpos($url, 'page21/page22')==false ) { $res = "%content menu('default', 2, ''id_страницы'')%"; } else { $res = "%content menu('default', 2)%"; } break;
Эта функция анализирует url и, если находит соответствующее совпадение, выводит меню с использованием макроса, который указан. Аналогичны образом можно выводить стили css, контент и многое другое, при этом, избегая создание новых шаблонов-дизайна.
