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

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

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

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

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

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

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

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

*

muldy

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

*

Vladimir

  • ****
  • 279
  • +48/-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

  • ****
  • 279
  • +48/-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 все в понятно, спасибо!
Единственный ньюанс это вывод всего этого через шаблон.
Те в данном случае будет отображаться только работа скрипта, без обхода шаблона!