Je veux modifier le lien du menu dans Drupal 8. Dans Drupal 7, nous pouvons y parvenir en utilisant 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;
}
}
}
Dans Drupal 7, je masque / désactive le menu en fonction de certaines conditions comme l'ID utilisateur.
De même, je souhaite modifier le lien du menu dans Drupal 8. Comment puis-je y parvenir?
hook_translated_menu_link_alter() has been replaced by hook_menu_link_load()
: je ne sais pas si c'est bien ou mal, je viens de le trouver. Peut-être que vous pouvez distinguer. Si, faites-le moi savoir également.Réponses:
HOOK_link_alter serait un D8 équivalent à hook_translated_menu_link_alter:
Voir l' URL de la classe Drupal 8 pour plus d'informations sur l'API.
Cependant, vous pouvez utiliser Hook_preprocess_HOOK () en tant que tel:
Je vérifie juste
path
ci-dessus, mais cela montre que vous pouvez masquer un seul élément de menu en fonction de certains critères.Pour les restrictions d'accès, selon vos besoins, vous pouvez examiner le routage et les autorisations en fonction
entity
de l'élément au lieu de l'élément de menu et laisser Drupal gérer l'affichage de l'élément de menu.Pour accéder au menu par rôle, regardez ce module: https://www.drupal.org/project/menu_item_role_access
la source
hook_link_alter()
n'est pas considéré comme un remplacementhook_translated_menu_link_alter()
car il n'y a que peu de clés qui peuvent être modifiées, et la clé d' accès n'en fait pas partie.Depuis drupal.org sur / node / 2122241:
Vous pourriez probablement utiliser hook_menu_links_discovered_alter pour votre scénario.
Modifier: vous souhaitez modifier l'autorisation d'accéder à ce lien, afin qu'il n'apparaisse pas automatiquement dans le menu.
Lire sur drupal.org: / node / 2311427
Vous devriez également lire cet article https://www.lullabot.com/articles/what-happened-to-hook_menu-in-drupal-8 (faites défiler jusqu'à "Access Control" et "Hook_Menu_Alter").
J'espère que ça aide.
la source