Pozycje menu niemożliwe do kliknięcia


21

Na stronie Drupal 8 chcę dodać pozycje menu z „bez linku”, myślałem, że nolink jest dozwolony, ale kiedy wszedłem, dostałem błąd

Ręcznie wprowadzone ścieżki powinny zaczynać się od /,? lub #.

Czy istnieje sposób dodawania elementów menu, których nie można kliknąć bez dodania „#”, ponieważ „#” dodaj atrybut [data-drupal-link-system-path = ""] i [class = "is-active"]

Odpowiedzi:


44

Musisz użyć, route:<nolink>aby to osiągnąć. Następnie zweryfikuje i wyrenderuje bez linku.


Dziękuję bardzo, próbowałem i działa dobrze, ale nadal dodaje atrybuty [data-drupal-link-system-path = "<front>"] i [class = "is-active"]
Mohamed Osama Gbril

1
Jest to osobny problem od tego, co próbujesz osiągnąć i albo podstawowy błąd, albo problem z twoim motywem, ale route:<nolink>zdecydowanie jest to odpowiedź. Działa nawet z Pathauto.
Kevin

Zgłoszono tutaj błąd klasy „is-active”: drupal.org/project/drupal/issues/2838351
FiNeX

To zadziałało dla mnie. Dzięki za takie kompetentne rozwiązanie.
Uczeń

2

Aby utworzyć pozycję menu bez łącza w niestandardowym module, dodaj do [nazwa_modułu] .links.menu.yml:

url: 'internal:##'

Musisz dodać drugi znak # (lub dowolną inną literę lub słowo url: 'internal:#nolink'), aby atrybut href nie stał się pusty, co spowoduje ponowne załadowanie strony, jeśli użytkownik kliknie link.


To również dobre rozwiązanie. Dla mnie lepsze niż usunięcie linku, który usuwa tag <a>, a następnie ten element menu traci odpowiednie style css.
Juanmi


0

W przypadku Drupala 8 możesz utworzyć łącze programowo, używając Link :: fromTextAndUrl, którego nie można powiązać w następujący sposób:

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

Opcjonalnie możesz przekonwertować go na tablicę za pomocą: $my_link = $my_link->toRenderable();

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.