Как вывести описание пункта меню в Drupal 8 (модуль simplify menu)?

Главные вкладки

Аватар пользователя chelwolf chelwolf 26 мая 2021 в 14:46

Вывожу меню в шаблоне главной страницы, используя модуль simplify menu (https://www.drupal.org/project/simplify_menu), чтобы переопределить разметку:

{% set quick_links_header = simplify_menu('quick-links-header') %}
  <ul class="menu__list">
  {% for menu_item in quick_links_header.menu_tree %}
    <li class="menu__item">
      <a class="DefAction" href="{{ menu_item.url }}">
         <span class="DefIcoText DefAction__DefIcoText">
            <span class="DefIco DefIcoText__DefIco"><i class="DefIco__ico"></i></span>
            <span class="DefIcoText__text">{{ menu_item.text }}</span>
         </span>
      </a>
    </li>
  {% endfor %}
  </ul>

Все хорошо работает, но появилась необходимость вывести описание пункта меню в title для ссылки

Попробовал {{ menu_item.description }} - не работает. Вопрос - как достать это описание?

Заглянул в системный шаблон menu.html.twig - не увидел среди переменных описание. В документации к модулю также нет ответа на вопрос.

Лучший ответ

Аватар пользователя chelwolf chelwolf 26 мая 2021 в 15:18

Оказывается это проблема модуля и для её решения пока помогает только патч: https://www.drupal.org/project/simplify_menu/issues/2891950#comment-1364...

В файле модуля по пути "/src/MenuItems.php" нужно заменить кусок кода (77 строка):

 // Build the link item.
      $simplifiedLink = [
        'text' => $item->link->getTitle(),
        'url' => $item->link->getUrlObject()->toString(),
        'options' => $item->link->getUrlObject()->getOptions(),
        'description' => $item->link->getDescription(),
        'active_trail' => FALSE,
        'active' => FALSE,
      ];

Как видно к выводимому массиву меню добавляются опции и описания, теперь описание доступно для вывода вот так: {{ menu_item.description }}

Комментарии

Аватар пользователя chelwolf chelwolf 26 мая 2021 в 14:56

Если без модуля, то выводят так:

{{ item.original_link.pluginDefinition.description }} не переводит описание

{{ item.original_link.getDescription() }} переводит описание

Аватар пользователя chelwolf chelwolf 26 мая 2021 в 15:18

Оказывается это проблема модуля и для её решения пока помогает только патч: https://www.drupal.org/project/simplify_menu/issues/2891950#comment-1364...

В файле модуля по пути "/src/MenuItems.php" нужно заменить кусок кода (77 строка):

 // Build the link item.
      $simplifiedLink = [
        'text' => $item->link->getTitle(),
        'url' => $item->link->getUrlObject()->toString(),
        'options' => $item->link->getUrlObject()->getOptions(),
        'description' => $item->link->getDescription(),
        'active_trail' => FALSE,
        'active' => FALSE,
      ];

Как видно к выводимому массиву меню добавляются опции и описания, теперь описание доступно для вывода вот так: {{ menu_item.description }}