Elementos de menú no seleccionables

21

En un sitio de Drupal 8, quiero agregar elementos de menú con "sin enlace", estaba pensando que nolink está permitido pero cuando ingresé esto, recibí un error

Las rutas ingresadas manualmente deben comenzar con /,? o #.

¿Hay alguna forma de agregar elementos de menú que no se puedan hacer clic sin agregar "#" porque "#" agrega atributo [data-drupal-link-system-path = ""] y [class = "is-active"]

Mohamed Osama Gbril
fuente

Respuestas:

44

Necesitas usar route:<nolink>para lograr esto. Luego validará y renderizará sin un enlace.

Kevin
fuente
Muchas gracias, lo probé y funciona bien, pero aún agrego atributos de [data-drupal-link-system-path = "<front>"] y [class = "is-active"]
Mohamed Osama Gbril
1
Esa es una cuestión separada de lo que está tratando de lograr y un error central o un problema con su tema, pero route:<nolink>definitivamente es la respuesta. Incluso funciona con Pathauto.
Kevin
El error de clase "está activo" se ha informado aquí: drupal.org/project/drupal/issues/2838351
FiNeX
Funcionó para mi. Gracias por una solución tan informada.
Alumno
2

Para crear un elemento de menú sin enlace en un módulo personalizado, agregue a [nombre_módulo] .links.menu.yml:

url: 'internal:##'

Debe agregar un segundo carácter # (o cualquier otra letra o palabra url: 'internal:#nolink') para que el atributo href no se vacíe, lo que provocará una recarga de la página si el usuario hace clic en el enlace.

Invitado312312
fuente
Esta es una buena solución también. Para mí, mejor que eliminar el enlace, eso elimina la etiqueta <a> y luego este elemento del menú pierde los estilos CSS correspondientes.
Juanmi
0

Para Drupal 8, puede crear un enlace mediante programación usando Link :: fromTextAndUrl que no se puede vincular así:

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

Opcionalmente, puede convertirlo en una matriz usando: $my_link = $my_link->toRenderable();

Javi García
fuente