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

Respuestas:


44

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


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.


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.