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?

Mohamed Osama Gbril
quelle

Antworten:

44

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

Kevin
quelle
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.

Guest312312
quelle
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();

Javi García
quelle