Печать меню второго уровня в Drupal 8

Разметка Drupal 8 довольно сильно изменилась по сравнению с Drupal 7 с использованием Twig Engine. Мы разрабатываем сайт с ним. Мы хотим напечатать там ссылки меню второго уровня.

  {% if main_menu %}
  <nav id ="main-menu" class="navigation" role="navigation">
      {{ main_menu }}
  </nav> <!-- /#main-menu -->

Вот как мы печатаем меню в Drupal 8. Синтаксис, к которому я не совсем привык.

Как я могу распечатать. Ссылки второго уровня в меню. Или дерево меню?


person Alen Saqe    schedule 17.02.2014    source источник


Ответы (3)


Согласно template_preprocess_page(), у вас должно быть также доступ к secondary_menu, поэтому:

{% if secondary_menu %}
  <nav id ="secondary-menu" class="navigation" role="navigation">
      {{ secondary_menu }}
  </nav>
{% endif %}

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

function MYTHEME_preprocess_page(&$vars) {
  $vars['foo'] = 'bar'; // foo is available in the page template file
}
person Clive    schedule 17.02.2014
comment
Я попробую это снова и проверю, работает ли это для моего случая. Спасибо за ответ. Я не могу отметить это как ответ прямо сейчас. Перед тестированием. Еще раз спасибо. - person Alen Saqe; 17.02.2014
comment
Работал как задумано. Я попытаюсь распечатать его при наведении, а не при нажатии, но отображается вторичное меню! Спасибо! - person Alen Saqe; 28.02.2014

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

Я узнал случайно, вот как это изменить:

  1. Перейдите на страницу https://‹yourdrupalpage›/admin/structure/block.
  2. в соответствующем элементе блока меню (например, в главном меню) нажмите настроить
  3. настроить количество видимых уровней меню в соответствии с вашими потребностями

это должно быть трюком

person Stephan Richter    schedule 20.07.2016

Я сделал то, что предлагает Стефан Рихтер, но забыл отметить эквивалентную опцию «Всегда отображать открытым» в пункте меню level1.

Итак, если вы хотите, чтобы ваш уровень 2 отображался, не забудьте эту опцию в родительском.

person Paul Leclerc    schedule 08.12.2016