Quero alterar o link do menu no Drupal 8. No Drupal 7, podemos conseguir isso usando hook_translated_menu_link_alter()
.
function module_translated_menu_link_alter(&$item, $map) {
global $user;
if (!empty($item['access'])) {
// Administrator will access all menu's.
if (strpos(current_path(), 'admin/structure/menu/manage/' . $item['menu_name']) === 0 && user_access('administer menu')) {
return;
}
// If userid is equal to menu user id.
if ($user->uid == 1) {
$access = 'UNBLOCK';
break;
}
// Block menu.
else {
$access = 'BLOCK';
}
// Access FALSE if Menu not for USER.
if ($access == 'BLOCK') {
$item['access'] = FALSE;
}
}
}
No Drupal 7, estou ocultando / desativando o menu com base em algumas condições, como o ID do usuário.
Da mesma forma, quero alterar o link do menu no Drupal 8. Como posso alcançá-lo?
hook_translated_menu_link_alter() has been replaced by hook_menu_link_load()
, não sei se está certo ou errado, apenas encontrei isso. Pode ser que você possa entender. Se, me avise também.Respostas:
HOOK_link_alter seria um D8 equivalente a hook_translated_menu_link_alter:
Consulte o URL da classe Drupal 8 para obter mais informações sobre a API.
No entanto, você pode usar Hook_preprocess_HOOK () como tal:
Basta verificar
path
acima, mas mostra que você pode ocultar um único item de menu com base em determinados critérios.Para as restrições de acesso, dependendo de suas necessidades, você pode considerar o roteamento e as permissões com base no
entity
item de menu em vez do item e deixar o Drupal gerenciar a exibição do item de menu.Para acesso ao menu por função, consulte este módulo: https://www.drupal.org/project/menu_item_role_access
fonte
hook_link_alter()
não é considerado um substituto,hook_translated_menu_link_alter()
uma vez que existem poucas chaves que podem ser alteradas e a chave de acesso não é uma delas.Do drupal.org em / node / 2122241:
Você provavelmente poderia usar hook_menu_links_discovered_alter para o seu cenário.
Editar: você deseja editar a permissão para acessar esse link, para que ele não apareça automaticamente no menu.
Leia em drupal.org: / node / 2311427
Você também deve ler este artigo https://www.lullabot.com/articles/what-happened-to-hook_menu-in-drupal-8 (role para baixo até "Controle de acesso" e "Hook_Menu_Alter").
Eu espero que isso ajude.
fonte