Работа компонентов из корневого каталога без префикса [Плагин]

+29
2.19K
Суть: можно заставить любые компоненты, например Карты работать без префикса /maps в урле.
  1. Было:
  2. site.ru/maps/category/obj.html
  3. site.ru/users/vasya.html
  4. site.ru/shop/category/item.html
  5.  
  6. Станет:
  7. site.ru/category/obj.html
  8. site.ru/vasya.html
  9. site.ru/category/item.html

Что умеет:

В настройках вы через запятую указываете, какие компоненты вызывать для поиска урла. Если ни один из компонентов ничего не вернёт, то будет вызван компонент статей, как это обычно и делается.

Важно!

Необходима как минимум правка файла frontend.php подключаемого компонента.
Плагин не меняет урлы, выводимые компонентом, конечно в плагине можно сделать автозамену вывода компонента, но ведь ещё есть и модули со своими ссылками.
Вызывает нагрузку, создаваемую вызовом компонентов из очереди.
Может работать на любой версии, но необходимо вносить небольшие коррективы в одну из функций плагина.
Проверялся и работает на 1.10.2.

Установка

1. Скачиваем и кладём в папку /plugins вашего сайта папку p_root_path из архива.
2. Открываем /core/cms.php и меняем:
1.
  1. private $uri;
на:
  1. public $uri;
2.
  1. private function parseComponentRoute(){
на:
  1. public function parseComponentRoute(){
3.
  1. private function detectAction(){
на:
  1. public function detectAction(){
4.
  1. if (!$component) { return false; }
на:
  1. if (!$component) { return false; }
  2.  
  3. if($component == 'content' && cmsCore::callEvent('BEFORE_COMPONENT_CONTENT', ''))
  4. return true;
5.
  1. call_user_func($component);
на:
  1. if(call_user_func($component) === false)self::error404();
Этот пункт позволяет отключить плагин даже после правок в файлах компонентов и не бояться ошибок на сайте.

Пробы

Для примера сделаем ссылки на профили и их содержимое от корня.
1. Открываем
  1. /components/users/frontend.php
и выполняем с помощью команды "Поиск и замена" в вашем редакторе замену всех:
  1. cmsCore::error404();
на:
  1. return false;
2. Берём из архива файл custom_rewrite.php и кладём его в корень сайта в случае его отсутствия. Если он у вас уже есть, то добавьте из него правило после всех содержащихся в вашем файле правил.
3. Произведите установку плагина и включите его — вы должны просто обязаны будете увидеть результаты его работы.

Просьба оставлять пожелания и найденные ошибки в комментариях.
+2
Олег Васильевич я Олег Васильевич я 8 лет назад #
Завтра проверю, если "оно" работает, 0,5 с меня!
0
nedoriko nedoriko 8 лет назад #
ну так работает?
+3
lokanaft lokanaft 8 лет назад #
До сих пор из запоя не вышел...
0
Олег Васильевич я Олег Васильевич я 8 лет назад #
... шо ж ты молчал, гад?
0
lezginka.ru lezginka.ru 8 лет назад #
Плагин не меняет урлы, выводимые компонентом
не совсем понял... так вроде меняет site.ru/maps/category/obj.html на site.ru/category/obj.html

или чего я не понял ?
0
lokanaft lokanaft 8 лет назад #
Появляется возможность, чтобы по site.ru/category/obj.html открывалось то, что прежде выводилось на site.ru/maps/category/obj.html
0
nedoriko nedoriko 8 лет назад #
появился такой вопрос
как быть если заголовки совпадают?
то-есть если раньше было site.ru/maps/v-regione и было такое-же site.ru/video/v-regione
0
lokanaft lokanaft 8 лет назад #
Значит надо выбрать, какой компонент для вас в приоритете - для того и делать.
0
lokanaft lokanaft 8 лет назад #
И самое главное - нужно ли вам это.
0
nedoriko nedoriko 8 лет назад #
в прошлом году очень нужно было.

Еще от автора

Ajax подгрузка контента для двойки
Ну что, товарищи, сегодня вы своими руками сможете сделать ajax подгрузку записей контента.
AJAX подгрузка комментов для двойки
Как следует из названия, дополнение ограничивает полный вывод всех комментов записи и позволяет пользователю при необходимости посмотреть следующие.
ContentWatch - проверка уникальности добавляемого контента для icms2
Компонент позволяет проверять уникальность текста с помощью сервиса Content-Watch.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.