Коллеги, поясните мне пожалуйста, нижеописанное поведение 8-го Друпала, логику которого у меня до конца не получается понять самостоятельно:
Есть Drupal 8.4.3, включаю в нём дефолтный модуль Forum. На сайте появляется ссылка "Forums", а в ней один автоматически созданный раздел, имеющий URL mysite.com/forum/1
На дворе 2018-й год (уже) и я решаю, что неплохо бы этот и без того привлекательный УРЛ сделать совсем красивым.
Для этого я в админке по адресу mysite.com/admin/structure/forum нажимаю "Edit forum" и попадаю на страницу mysite.com/admin/structure/forum/edit/forum/1
Там в поле "URL alias" я указываю /forum/niceurl, чтобы получить mysite.com/forum/niceurl вместо mysite.com/forum/1
И вот тут начинается непонятное.
Если я захожу на дефолтный адрес mysite.com/forum/1, то вижу правильную картину - предложение создать новую тему, т.к. форум ещё пустой:
НО!
Если зайти на mysite.com/forum/niceurl, то там уже будет вот такое, что не есть правильно:
По факту это то, что отображается при посещении mysite.com/taxonomy/term/1
В этом можно дополнительно убедиться зайдя в админке в "Administration > Configuration > Search and metadata" - mysite.com/admin/config/search/path (алиас создался для /taxonomy/term/1).
В то время как для правильного функционирования этот алиас должен был быть создан для /forum/1
- Во-первых, почему так происходит?
- А во-вторых, если я исправлю алиас на логически верный (см. выше), не вызовет ли это каких-либо глюков или проблем с SEO?
- Или может ЧПУ для разделов форума нужно задавать по-другому?
Ответы
Я посмотрел код модуля, и похоже форум использует термины таксономии для создания разделов форума.
forum.page:
path: '/forum/{taxonomy_term}'
defaults:
_controller: '\Drupal\forum\Controller\ForumController::forumPage'
_title_callback: '\Drupal\taxonomy\Controller\TaxonomyController::termTitle'
requirements:
_permission: 'access content'
То есть, вы изменили alias для термина таксономии.
Попробуйте, задать алиас другим способом, напрямую через Добавить синоним
/admin/config/search/path/add
Существующий системный путь: /forum/1
Синоним пути: /forum/testurl
Потом зайдите по адресу /forum/testurl и проверьте.
Я не уверен, что этот способ будет работать, отпишитесь о результатах.