Рейтинг:-3

Показывать один и тот же контент с разными URL

флаг th

Мне нужно показать один и тот же контент с разными URL-адресами.

Я хотел бы создавать динамические маршруты при сохранении узла в Drupal 9.

Это кажется правильным?

Какое-то другое решение или аналогичный модуль.

Конкретный вариант использования:

node/1 -> «Как зарегистрироваться»

url -> '/actor/как зарегистрироваться', '/supporter/как зарегистрироваться'

P.S. Мне нужна первая часть пути (актер,поддерживающий) для различных проверок

NicklasF avatar
флаг us
Я думаю, вам нужно уточнить вариант использования. Вам нужно несколько динамических маршрутов для одного и того же узла? Что должно определять URL-адреса? Но вы можете попробовать заглянуть в [PathAuto](https://www.drupal.org/project/pathauto).
Рейтинг:1
флаг cn

Единственный пример в ядре Drupal для динамического маршрута в зависимости от сохраненных пользователем данных — это View с отображением страницы, и это занимает очень много времени для сохранения. Представлениям нужны маршруты для контекстных фильтров. Если у вас нет такого конкретного варианта использования контента (пожалуйста, отредактируйте свой вопрос, если он у вас есть), правильным путем будут псевдонимы. В форме редактирования узла вы можете добавить только один псевдоним, но вы можете добавить больше в /admin/config/поиск/путь. Если вы хотите, чтобы в одном месте вы могли изменить форму редактирования узла для нескольких псевдонимов.

Если вы не хотите создавать каждый псевдоним вручную, а пути имеют шаблон, вы можете использовать обработчик путей. Вы можете создать леса с drush

процессор пути drush gen

и поместите шаблон регулярного выражения во входящий метод:

/modules/custom/mymodule/src/PathProcessor/PathProcessorMymodule.php

<?php

пространство имен Drupal\mymodule\PathProcessor;

используйте Drupal\Core\PathProcessor\InboundPathProcessorInterface;
используйте Symfony\Component\HttpFoundation\Request;

/**
 * Процессор пути для удаления префикса.
 */
класс PathProcessorMymodule реализует InboundPathProcessorInterface {

  /**
   * {@inheritdoc}
   */
  общедоступная функция processInbound ($ путь, запрос $ запрос) {
    return preg_replace('#^/(автор|поддерживающий)/#', '/', $path);
  }

}

Вы можете получить исходный путь позже с помощью

\Drupal::request()->getPathInfo()

или вы можете сохранить префикс в свойстве службы перед его удалением, чтобы сделать его глобально доступным.

Если ваши проверки производят визуализированный вывод, добавьте url.путь контекст кеша.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.