Nicht anklickbare Menüelemente


21

Auf einer Drupal 8-Site möchte ich Menüelemente mit "no link" hinzufügen. Ich dachte, dass Nolink zulässig ist, aber als ich dies eingab, wurde ein Fehler gemeldet

Manuell eingegebene Pfade sollten mit /,? Beginnen. oder #.

Gibt es eine Möglichkeit zum Hinzufügen von Menüelementen, die nicht ohne Hinzufügen von "#" angeklickt werden können, weil "#" das Attribut [data-drupal-link-system-path = ""] und [class = "is-active"] hinzufügt?

Antworten:


44

Sie müssen verwenden route:<nolink>, um dies zu erreichen. Dann wird es validiert und ohne Link gerendert.


Vielen Dank, ich habe es ausprobiert und es funktioniert einwandfrei, aber ich füge immer noch Attribute von [data-drupal-link-system-path = "<front>"] und [class = "is-active"] hinzu
Mohamed Osama Gbril

1
Das ist ein anderes Problem als das, was Sie erreichen wollen, und entweder ein Kernfehler oder ein Problem mit Ihrem Thema, aber es route:<nolink>ist definitiv die Antwort. Es funktioniert sogar mit Pathauto.
Kevin

Der Klassenfehler "ist aktiv" wurde hier gemeldet: drupal.org/project/drupal/issues/2838351
FiNeX

Es hat bei mir funktioniert. Vielen Dank für eine so sachkundige Lösung.
Schüler

2

Um ein Menüelement ohne Link in einem benutzerdefinierten Modul zu erstellen, fügen Sie [Modulname] .links.menu.yml hinzu:

url: 'internal:##'

Sie müssen ein zweites # -Zeichen (oder einen beliebigen anderen Buchstaben oder ein anderes Wort url: 'internal:#nolink') hinzufügen , damit das href-Attribut nicht leer wird. Wenn der Benutzer auf den Link klickt, wird die Seite neu geladen.


Dies ist auch eine gute Lösung. Für mich ist es besser, den Link zu entfernen, der das <a> -Tag entfernt, und dann verliert dieser Menüpunkt die entsprechenden CSS-Stile.
Juanmi


0

Für Drupal 8 können Sie einen Link programmgesteuert mit Link :: fromTextAndUrl erstellen, der nicht wie folgt verlinkt werden kann:

$my_link = Link::fromTextAndUrl(t('This is my link text'), Url::fromUri('route:<nolink>'));

Optional können Sie es in ein Array konvertieren, indem Sie Folgendes verwenden: $my_link = $my_link->toRenderable();

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.