Рейтинг:1

Динамические языковые ссылки из меню?

флаг in

Я пытаюсь найти способ сделать следующее:

  • Добавление языков в пункты меню Drupal 9
  • Перевод ссылок контента/меню
  • Предоставьте (из основной навигации) список языков текущая страница переведена на

Мне удалось выполнить первые два, но я не вижу, как получить меню со списком ссылок, которые выводят доступные языковые параметры для текущего объекта. Я вижу, что в ядре есть блок Language Switcher, но есть ли способ сделать так, чтобы он отображался в самом меню Drupal?

введите описание изображения здесь

флаг cn
Я не думаю, что это было полностью решено в ядре, есть модули, которые помогут, такие как https://www.drupal.org/project/menu_block_current_language, https://www.drupal.org/project/menu_manipulator, https: //www.drupal.org/project/menu_multilingual
Kevin avatar
флаг in
Хм... должен быть способ имитировать это. я посмотрю вокруг
4uk4 avatar
флаг cn
Для решения кода вам понадобится подключаемый модуль ссылки динамического меню, указывающий на текущий узел, полученный для каждого языка. Как этот пример для локальных задач https://drupal.stackexchange.com/questions/292739/how-to-get-links-of-translated-node-edit-page-in-the-secondary-tabs
Kevin avatar
флаг in
Ясно - это сработает, даже если это не локальная задача? Например, как бы вы добавили его к «Основной навигации»?
Рейтинг:0
флаг cn

Вы помещаете статическую информацию в *.links.menu.yml, где вы также определяете плагины ссылок динамического меню, которые предоставляют информацию, которую вы не можете поместить в статический yml. И производный для создания плагина для каждого языка. Пример с локальной задачей был просто примером перевода.

Рабочий статический пример:

мой модуль.ссылки.меню.yml

мой модуль.язык.топ:
  название: 'EN'
  имя_меню: основное
  route_name: '<нет>'
  развернуто: правда
  # Класс плагина для динамического переопределения заголовка:
  # класс: Drupal\mymodule\Plugin\Menu\TranslatedNodeTop
мой модуль.язык.элемент:
  title: 'Узел 8 испанский'
  родитель: mymodule.language.top
  route_name: entity.node.canonical
  route_parameters: {узел: '8'}
  имя_меню: основное
  параметры:
    атрибуты:
      учебный класс:
        - foo-класс
        - бар-класс
  # производное для установленных языков
  производный: Drupal\mymodule\Plugin\Derivative\TranslatedNodeTabDeriver
  # Класс плагина, расширяющий MenuLinkDefault, динамически переопределяющий статические свойства,
  # параметр маршрута из текущего совпадения маршрута, язык из производного
  # добавлен заголовок из обоих атрибутов и атрибутов ссылки для текущего языка:
  # класс: Drupal\mymodule\Plugin\Menu\TranslatedNodeItem

Вам нужно добавить два динамических плагина, расширяющих MenuLinkDefault. Я переработал TranslatedNodeTabDeriver из Как получить ссылки на страницу редактирования переведенного узла на дополнительных вкладках.

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

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