Drupal 10: Teilmenü eines bestehenden Menüs über einen Link per Ajax anzeigen lassen?

Antwort

Um ein Teilmenü eines existierenden Menüs in Drupal 10 über einen Link auf einer Seite via Ajax darzustellen, kannst du die folgenden Schritte befolgen: 1. **Erstelle ein benutzerdefiniertes Modul**: Wenn du noch kein benutzerdefiniertes Modul hast, erstelle eines, um deine Funktionalität zu implementieren. 2. **Definiere die Route**: Füge in deiner Moduldatei eine Route hinzu, die die Ajax-Anfrage verarbeitet. Dies geschieht in der `MODULE_NAME.routing.yml` Datei. ```yaml module_name.ajax_menu: path: '/ajax-menu' defaults: _controller: '\Drupal\module_name\Controller\AjaxMenuController::getMenu' _title: 'Ajax Menu' requirements: _permission: 'access content' ``` 3. **Erstelle den Controller**: Erstelle einen Controller, der die Logik für das Abrufen des Teilmenüs enthält. In der Datei `src/Controller/AjaxMenuController.php`: ```php namespace Drupal\module_name\Controller; use Drupal\Core\Controller\ControllerBase; use Symfony\Component\HttpFoundation\JsonResponse; class AjaxMenuController extends ControllerBase { public function getMenu() { $menu_tree = \Drupal::menuTree()->load('menu_name'); // Ersetze 'menu_name' mit dem maschinenlesbaren Namen deines Menüs. $build = $this->menuTree->build($menu_tree); return new JsonResponse($build); } } ``` 4. **Füge den Link hinzu**: Füge auf deiner Seite einen Link hinzu, der die Ajax-Anfrage auslöst. Dies kann in einem Twig-Template oder in einem Block geschehen. ```html <a href="#" id="ajax-menu-link">Menü anzeigen</a> <div id="ajax-menu-container"></div> ``` 5. **Implementiere das JavaScript**: Füge ein JavaScript-File hinzu, das die Ajax-Anfrage ausführt, wenn der Link geklickt wird. In deiner `MODULE_NAME.libraries.yml`: ```yaml ajax_menu: version: 1.x js: js/ajax_menu.js: {} dependencies: - core/jquery - core/drupal ``` Und in der Datei `js/ajax_menu.js`: ```javascript (function ($, Drupal) { Drupal.behaviors.ajaxMenu = { attach: function (context, settings) { $('#ajax-menu-link', context).once('ajax-menu').on('click', function (e) { e.preventDefault(); $.ajax({ url: '/ajax-menu', type: 'GET', success: function (data) { $('#ajax-menu-container').html(data); } }); }); } }; })(jQuery, Drupal); ``` 6. **Aktiviere das Modul**: Stelle sicher, dass dein benutzerdefiniertes Modul aktiviert ist. Mit diesen Schritten solltest du in der Lage sein, ein Teilmenü über einen Link auf einer Seite via Ajax darzustellen. Achte darauf, die Platzhalter wie `module_name` und `menu_name` durch die entsprechenden Werte zu ersetzen.

Kategorie: Webentwicklung Tags: Drupal AJAX Menü
Frage stellen und sofort Antwort erhalten

Verwandte Fragen

Gibt es ein Menü-Modul für Drupal, um mehrstufige vertikale Menüs zu erstellen?

Ja, es gibt mehrere Module für Drupal, die es ermöglichen, mehrstufige vertikale Menüs zu erstellen. Ein beliebtes Modul ist das **"Menu Block"**-Modul, das dir erlaubt, benut... [mehr]

Wie kann man in Drupal eine View im Twig-Template anzeigen?

Um in Drupal eine View in einem Twig-Template anzuzeigen, kannst du die folgenden Schritte befolgen: 1. **Erstelle die View**: Gehe zu `Struktur` > `Views` und erstelle eine neue View oder bearbei... [mehr]

Wie realisiert man mit JavaScript unter Drupal 10, dass ein DIV beim Scrollen nach oben fixiert wird, wenn es 100 Pixel von oben entfernt ist?

Um ein `div` in Drupal 10 mit reinem JavaScript (ohne jQuery) beim Scrollen zu fixieren, wenn es 100 Pixel von oben entfernt ist, kannst du folgenden Ansatz verwenden: 1. Füge deinem Theme eine... [mehr]

Wie realisiert man unter Drupal 10, dass sich ein Div beim Scrollen nach oben fixiert, wenn es 100 Pixel von oben entfernt ist?

Um ein `div` in Drupal 10 beim Scrollen zu fixieren, wenn es 100 Pixel von oben entfernt ist, kannst du JavaScript oder jQuery verwenden. Hier ist ein einfaches Beispiel, wie du dies umsetzen kannst:... [mehr]

Wie erstellt man in Drupal 10 ein Archiv, das Artikel nach Jahren sortiert und in diesen dann die Artikel monatlich sortiert?

Um in Drupal 10 ein Archiv zu erstellen, das Artikel nach Jahren und innerhalb dieser Jahre nach Monaten sortiert, kannst du die folgenden Schritte befolgen: 1. **Inhaltstyp erstellen**: Stelle siche... [mehr]

Änderungen in einer MySQL-Tabelle per AJAX melden und ein Audiosignal auf der Webseite einmal abspielen.

Um Änderungen in einer MySQL-Tabelle per AJAX zu melden und ein Audiosignal auf der Webseite nur einmal abzuspielen, kannst du folgende Schritte befolgen: 1. **Backend-Setup**: Erstelle ein PHP-... [mehr]

Änderungen in einer MySQL-Tabelle per AJAX melden und Audio-Signal auf der Webseite abspielen?

Um Änderungen in einer MySQL-Tabelle per AJAX zu melden und ein Audiosignal auf der Webseite abzuspielen, kannst du folgende Schritte befolgen: 1. **Backend (PHP)**: - Erstelle ein PHP-Skript... [mehr]

OG Tags werden in Drupal nicht angezeigt. Was muss ich tun, damit diese angezeigt werden?

Um sicherzustellen, dass die OG-Tags (Open Graph Tags) in Drupal angezeigt werden, kannst du folgende Schritte unternehmen: 1. **Modul installieren**: Stelle sicher, dass du das Modul "Metatag&q... [mehr]

Wie füge ich einem Drupal-Formular ein verborgenes Feld hinzu?

Um einem Drupal-Formular ein verborgenes Feld hinzuzufügen, kannst du die `#type`-Eigenschaft des Feldes auf `hidden` setzen. Hier ist ein einfaches Beispiel, wie du dies in einem benutzerdefinie... [mehr]

Wie fügt man in Drupal 10 die User ID in einen Menüpunkt ein?

Um in Drupal 10 die User ID in einem Menüpunkt einzufügen, kannst du die folgenden Schritte befolgen: 1. **Menüpunkt erstellen oder bearbeiten**: Gehe zu „Struktur“ > &b... [mehr]