Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
robots.txt свой для каждого сайта в старой версии Umi

Автор shotoРаздел Настройка системы и модулей

Ответов: 12
Просмотров: 3926
Последний ответ 02 Октябрь 2014, 11:05:49
от shoto
Пробую писать свой модуль где почитать

Автор adminРаздел Разработка модулей

Ответов: 6
Просмотров: 5026
Последний ответ 16 Декабрь 2010, 07:29:14
от Sameshit
Добавить свой атрибут к item?

Автор muldyРаздел Custom макросы

Ответов: 7
Просмотров: 1933
Последний ответ 28 Август 2013, 12:52:48
от admin

0 Пользователей и 1 Гость просматривают эту тему.

*

muldy

  • ***
  • 222
  • +9/-1
    • Просмотр профиля
Свой роутинг?
« : 07 Июль 2016, 18:23:22 »
Здравствуйте!
Потребовалось создать свой роутинг для определенных страниц, те не создавая их в админке вывести данные.
Те как пример, требуется обработать страницу вида:
сайт/place_earth/
Те обработать все урл содержащие place_, и не отдавать 404 ошибку если нет такой страницы в системе.
Возможно ли вообще такое реализовать?

*

Vladimir

  • ****
  • 271
  • +46/-0
    • Просмотр профиля
Re: Свой роутинг?
« Ответ #1 : 07 Июль 2016, 20:31:55 »
Да. В htaccess выше правил ЮМИ добавить свои rewrite rule. Редирект сделаете на некую свою страницу, которую придется создать, либо на метод модуля (макрос). Параметром при переадресации можно передать исходный url или его часть и, в зависимости от этого, сделать дополнительную обработку с своем макросе.

*

muldy

  • ***
  • 222
  • +9/-1
    • Просмотр профиля
Re: Свой роутинг?
« Ответ #2 : 07 Июль 2016, 20:37:53 »
А не подскажите где вообще роутинг прописан в umi?
Ну или если не трудно, приведите пример.
Подобных страниц просто будет очень много, создавать их в системе не вижу смысла.

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Re: Свой роутинг?
« Ответ #3 : 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-страниц для фильтра как раз с его помощью
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

muldy

  • ***
  • 222
  • +9/-1
    • Просмотр профиля
Re: Свой роутинг?
« Ответ #4 : 08 Июль 2016, 14:04:52 »
Сделал по примеру Владмира.
Создал страницу, и в htaccess прописал:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^place(.*)$  place [L]

*

Vladimir

  • ****
  • 271
  • +46/-0
    • Просмотр профиля
Re: Свой роутинг?
« Ответ #5 : 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');
« Последнее редактирование: 08 Июль 2016, 19:54:44 от Vladimir »

*

muldy

  • ***
  • 222
  • +9/-1
    • Просмотр профиля
Re: Свой роутинг?
« Ответ #6 : 14 Июль 2016, 13:18:43 »
Vladimir все в понятно, спасибо!
Единственный ньюанс это вывод всего этого через шаблон.
Те в данном случае будет отображаться только работа скрипта, без обхода шаблона!