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"]

Mohamed Osama Gbril
źródło

Odpowiedzi:

44

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

Kevin
źródło
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.

Gość312312
źródło
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();

Javi García
źródło