UMIhelp

Разработка дополнительного функционала => Custom макросы => Тема начата: muldy от 07 Июля 2016, 18:23:22

Название: Свой роутинг?
Отправлено: muldy от 07 Июля 2016, 18:23:22
Здравствуйте!
Потребовалось создать свой роутинг для определенных страниц, те не создавая их в админке вывести данные.
Те как пример, требуется обработать страницу вида:
сайт/place_earth/
Те обработать все урл содержащие place_, и не отдавать 404 ошибку если нет такой страницы в системе.
Возможно ли вообще такое реализовать?
Название: Re: Свой роутинг?
Отправлено: Vladimir от 07 Июля 2016, 20:31:55
Да. В htaccess выше правил ЮМИ добавить свои rewrite rule. Редирект сделаете на некую свою страницу, которую придется создать, либо на метод модуля (макрос). Параметром при переадресации можно передать исходный url или его часть и, в зависимости от этого, сделать дополнительную обработку с своем макросе.
Название: Re: Свой роутинг?
Отправлено: muldy от 07 Июля 2016, 20:37:53
А не подскажите где вообще роутинг прописан в umi?
Ну или если не трудно, приведите пример.
Подобных страниц просто будет очень много, создавать их в системе не вижу смысла.
Название: Re: Свой роутинг?
Отправлено: e.ioffe от 07 Июля 2016, 22:06:40
Посмотрите в сторону umap - http://wiki.umisoft.ru/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%D0%B0_umap

Видел реализацию seo-страниц для фильтра как раз с его помощью
Название: Re: Свой роутинг?
Отправлено: muldy от 08 Июля 2016, 14:04:52
Сделал по примеру Владмира.
Создал страницу, и в htaccess прописал:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^place(.*)$  place [L]
Название: Re: Свой роутинг?
Отправлено: Vladimir от 08 Июля 2016, 19:50:58
Набросал демо. У меня нет под руками ЮМИ, где можно экспериментировать, поэтому условный макет на чистом листе.
Вы запрашиваете страницу palce_нечто. Происходит переадресация, где "нечто" передается в виде get-параметра. Если в строке запроса были другие параметры, они добавляются в конец.
Пример запроса:
demo.umi-cms.spb.su/umihelp/palce_spb/?beta=55
Мой htaccess
RewriteCond %{REQUEST_URI} place_(.*)
RewriteRule ^place_(.*)(/?)$ index.php?param=$1 [R=301,QSA,L]
У вас в ЮМИ последняя строчка будет как-то так:
RewriteRule ^place_(.*)(/?)$ /метод/кастомный_макрос/?param=$1 [R=301,QSA,L]
В своем кастомном макросе разбираете param. Один обработчик на все варианты запросов.
Или еще красивее
RewriteRule ^place_(.*)(/?)$ /метод/кастомный_макрос/$1/ [R=301,QSA,L]

.....

$place=  getRequest('param0');
Название: Re: Свой роутинг?
Отправлено: muldy от 14 Июля 2016, 13:18:43
Vladimir все в понятно, спасибо!
Единственный ньюанс это вывод всего этого через шаблон.
Те в данном случае будет отображаться только работа скрипта, без обхода шаблона!