Antworten:
Das Menü "Vereinfachen" klingt nach Ihren Wünschen.
Das simplify_menu-Modul verwendet eine TwigExtension, um Zugriff auf das Render-Array des Hauptmenüs von Drupal (oder eines anderen Menüs) zu erhalten, sodass über eine Zweigvorlage darauf zugegriffen werden kann. Zu den vielen Vorteilen der vollständigen Kontrolle über das Render-Array des Menüs in einer Zweigvorlage gehört die Möglichkeit, das Markup für Ihre Menüs anzupassen, um sicherzustellen, dass sie zugänglich sind und den Standards entsprechen.
// Get menu items
{% set items = simplify_menu('main') %}
// Iterate menu tree
<ul>
{% for menu_item in items.menu_tree %}
<li class="{{ item_class }} navigation__item">
<a href="{{ menu_item.url }}" class="{{ link_class }}">{{ menu_item.text }}</a>
</li>
{% endfor %}
</ul>
Andernfalls können menu-*
beim Rendern eines Menüs aus einem Block eine Handvoll Zweigvorlagen verwendet werden. Aktivieren Sie Ihre Twig-Debugging-Einstellungen in Drupal, um die Vorschläge zu sehen.
Sie müssen jedoch ziemlich gute Kenntnisse über Menü-Themen haben, um sie genau richtig zu machen (wie die Behandlung von untergeordneten Elementen und nicht die flache Menüstruktur, wie das obige Beispiel zeigt) - das heißt, ich würde mich daran halten, einen Block das Menü in a rendern zu lassen gegebene Region. Überprüfen menu.html.twig
Sie anschließend anhand Ihres Basisthemas (entweder edel oder stabil), welche Optionen Sie haben, wenn Sie das Markup ändern möchten.
Stellen Sie sicher, dass Sie einen anständigen Vorschlag für eine Zweigvorlage verwenden und nicht nur menu.html.twig
- da dies jedes Menü betrifft, das von Drupal gerendert wird ... ist dies die Standardvorlage.
Ich würde auch vorschlagen, Menu Block zu installieren, da dies zusätzliche Flexibilität bei Themen- und Zweigdateivorschlägen bietet. Außerdem wird das Rendern von Menübäumen (z. B. abschnittsbasierte Navigation in einer Seitenleiste) zum Kinderspiel.
{% set items = simplify_menu('main') %}
aber (in diesem Fall) das Hauptnavigationsmenü wird nicht gerendert?
header.twig
ich versucht {{ simplify_menu('crmnavigation') }}
, aber es wird nicht der Block geladen? Wissen Sie, wie ich den Block und das darin enthaltene Menü in meinem header.twig
Simplify-Menü lade ?
Aktivieren Sie das Modul simplify_menu und fügen Sie den folgenden Code zu Ihrer page.html.twig oder einer anderen Zweigvorlage hinzu, in der Sie Ihr Menü rendern möchten:
<nav class="navigation__main" role="navigation">
{% set item_class = 'navigation__item' %}
{% set link_class = 'navigation__link' %}
<ul class="navigation__items">
{% set items = simplify_menu('main') %}
{% for menu_item in items.menu_tree %}
<li class="{{ item_class }}"><a href="{{ menu_item.url }}" class="{{ link_class }}">{{ menu_item.text }}</a></li>
{% endfor %}
</ul>
</nav>
das 'main'
ist das Menü - ID , die Sie mit dem Mauszeiger über das Menü der Schaltfläche Bearbeiten in den Menüs Seite und Blick auf die URL angezeigt am unteren Rand des Browsers finden.
Für diejenigen , die noch nach einem alternativen Ansatz suchen, schlage ich mit Zweig Tweak - Modul als stabiler und globalen Anwendungsfall Besuche seine Spickzettel
Um das Menü über Twig Tweak zu rendern, können Sie einfach Folgendes tun:
{# Expand menu items to display the entire menu tree. #}
{{ drupal_menu('menu_machine_name') }}
{# Specify menu level and depth. #}
{{ drupal_menu('admin', 2, 3) }}