Itens de menu não clicáveis

21

Em um site do Drupal 8, quero adicionar itens de menu com "sem link", eu estava pensando que nolink é permitido, mas quando inseri isso, recebi um erro

Os caminhos inseridos manualmente devem começar com /,? ou #.

Existe uma maneira de adicionar itens de menu não clicáveis ​​sem adicionar "#" porque "#" adicione o atributo [data-drupal-link-system-path = ""] e [class = "is-active"]

Mohamed Osama Gbril
fonte

Respostas:

44

Você precisa usar route:<nolink>para conseguir isso. Em seguida, ele será validado e renderizado sem um link.

Kevin
fonte
Muito obrigado, tentei e funcionou bem, mas ainda adicionando atributos de [data-drupal-link-system-path = "<front>"] e [class = "is-active"]
Mohamed Osama Gbril
1
Essa é uma questão separada do que você está tentando alcançar e um dos principais problemas ou problemas com o seu tema, mas route:<nolink>é definitivamente a resposta. Até funciona com Pathauto.
22717 Kevin
A "é-ativa" bug classe foi relatado aqui: drupal.org/project/drupal/issues/2838351
Finex
Funcionou para mim. Obrigado por uma solução tão experiente.
Pupil
2

Para criar um item de menu sem link em um módulo personalizado, adicione [module_name] .links.menu.yml:

url: 'internal:##'

Você precisa adicionar um segundo caractere # (ou qualquer outra letra ou palavra url: 'internal:#nolink') para que o atributo href não fique vazio, o que causará o recarregamento da página se o usuário clicar no link.

Convidado312312
fonte
Esta é uma boa solução também. Para mim, é melhor do que remover o link, que remove a tag <a> e, em seguida, esse item de menu perde os estilos css correspondentes.
Juanmi
0

Para o Drupal 8, você pode criar um link programaticamente usando o Link :: fromTextAndUrl não vinculável assim:

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

Opcionalmente, você pode convertê-lo em uma matriz usando: $my_link = $my_link->toRenderable();

Javi García
fonte