Переименование blogs в community и blog в id

Всем привет еще раз. Прошлый топик я убрал в черновики, потому что сам уже что-то намудрил с конфигом и запутался с тем, в чем же была проблема. Тем не менее сейчас, когда я разобрался как нужно прописывать роуты, кое-какие вопросы все-таки остались.

Поправьте меня, если я что-то забыл указать (надеюсь на это!), в противном случае в движке есть некоторые недоработки в роутинге, и нужно открывать новый тикет на гитхабе. Поехали.

Переименование blogs в community

Это наименее проблемная часть.

В конфиге указываем:
$config['router']['page']['blogs']        = 'ActionError';
$config['router']['page']['community']        = 'ActionBlogs';

В результате:
ссылки формируются правильно (/community)
мета-теги hreflang в коде формируются правильно:
<link rel="alternate" hreflang="x-default" href="http://sitename.com/community/">
<link rel="alternate" hreflang="ru" href="http://sitename.com/ru/community/">
<link rel="alternate" hreflang="en" href="http://sitename.com/en/community/">

Адрес вида sitename.com/blogs/ не открывается, как и положено

НО мета-тег canonical формируется неправильно!
<link rel="canonical" href="http://sitename.com/blogs/?order=blog_rating&order_way=desc"/>


Переименование blog в id

Эта часть сложнее.

В конфиге прописываем
$config['router']['page']['id']        = 'ActionBlog';

В результате:
Ссылки на блог формируются правильно (/id/xxx)
Мета-тег canonical для страницы блога формируется правильно
Мета-теги hreflang для страницы блога формируются правильно

НО блог также открывается и по ссылке sitename.com/blog/xxx

Поскольку ActionBlog отвечает еще и за вывод содержимого топика, перейдем к странице топика:
Ссылки на топик формируются правильно — в зависимости от заданного в настройках сайта (/t/%topic_id%)
Мета-тег canonical формируется правильно

НО Мета-теги hreflang формируются неправильно:
<link rel="alternate" hreflang="x-default" href="http://sitename.com/blog/%topic_id%.html/">
<link rel="alternate" hreflang="ru" href="http://sitename.com/ru/blog/%topic_id%.html/">
<link rel="alternate" hreflang="en" href="http://sitename.com/en/blog/%topic_id%.html/">


Пробуем в конфиг добавить следующее, чтобы не открывались ссылки /blog/, не было дубликатов и каких-либо упоминаний о блоге в ссылках:
$config['router']['page']['blog']        = 'ActionError';


НО после этого перестают показываться топики по заданным в настройках сайта параметрам url.

Соответственно, вопрос. Это я что-то упустил или стоит открыть тикет на гитхабе о баге в роутинге движка?

Похожие статьи

  • Принцип работы Alto CMS в картинках
    Каждый запрос, который получает движок, сначала обрабатывается роутером (Router). Примерно так же, как каждого посетителя в крупных компаниях встречает девушка на ресепшен, которая узнает, чего надо посетителю,...
  • Возможен ли реврайт любого урла из плагина?
    Сабж. Хотел сделать возможность динамического переопределения урлов администратором. Но обращение к каким-либо классам в конфиге невозможно (надо получить список урлов), а в методе Init() плагина что-либо делать с...
  • Замена ЛСовскому Config::Set('router.page........')
    Здравсвуйте открыл свежую из гита версию Альто и возник вопрос по плагинам как сделать замена ЛСовскому Config::Set('router.page........') Смотрел плагин estheme нашел вот такую интересную строчку: /** *...
  • Поменять местами "Интересные" и "Новые"
    Я хочу, чтобы по-умолчанию открывалась страница с новыми топиками (сейчас это /index/newall), а при клике на «Интересные» — по отдельному пути уже та страница, которая сейчас на /index В конфиге есть параметры...

5 комментариев

0
Вообще-то правильный ход такой: если надо перенаправить запросы с site.com/community на site.com/blogs, то в конфиге это записывается так
$config['router']['rewrite'] = array(
    'community' => 'blogs',
);
Но честно признаюсь, не проверял, какие при этом формируются мета-теги, проверю
0
Не знаю, не знаю… Мне нужно из blogs переименовать в community. Прописываю параметр
$config['router']['rewrite'] = array(
    'blogs' => 'community',
);

в итоге ссылки формируются на сайте в виде /blogs, и они не открываются — ошибка 404.
0
Я вам в прошлой удаленной теме уже ответил, посмотрите как сделано в моем топике с заданием экшена и реврайтом — всего 2 настройки в конфиге и все отлично работает.
+1
Вся соль в том, что используется не «переименовывание», а реврайтинг. Ведь на самом деле управление передается тому же самому контроллеру, что и раньше. Только раньше контроллер определялся автоматически, т.к. он совпадал с URL:

site.com/blogs -> ActionBlogs

А сейчас вы хотите другой URL перенаправить на тот же обработчик:

site.com/community -> site.com/blogs -> ActionBlogs

Вот и надо в конфиге прописать, чтобы запрос community отправлялся туда же, куда обычно отправляется запрос blogs.

Сравните мой код и Ваш, и поймите разницу. Если Вы хоть когда-нибудь писали правила для .htaccess, то все должно быть очевидным
Отредактирован:
0
Все, спасибо. Мое фундаментальное недопонимание роутинга было именно в работе реврайта. Я считал, что будут перенаправляться запросы из blogs в community, а нужно было считать так, как вы описали в комментарии.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.