Quiero alterar el enlace del menú en Drupal 8. En Drupal 7 podemos lograr esto 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;
}
}
}
En Drupal 7, estoy ocultando / deshabilitando el menú en función de algunas condiciones, como la ID de usuario.
Del mismo modo, quiero alterar el enlace del menú en Drupal 8. ¿Cómo puedo lograrlo?
hook_translated_menu_link_alter() has been replaced by hook_menu_link_load()
, no sé si es correcto o incorrecto, acabo de encontrar esto. Puede ser que puedas besarte. Si, házmelo saber también.Respuestas:
HOOK_link_alter sería un equivalente D8 a hook_translated_menu_link_alter:
Consulte la URL de la clase Drupal 8 para obtener más información sobre la API.
Sin embargo, puede usar Hook_preprocess_HOOK () como tal:
Solo verificando
path
arriba, pero muestra que puede ocultar un solo elemento del menú según ciertos criterios.Para las restricciones de acceso, dependiendo de sus necesidades, puede mirar el enrutamiento y los permisos basados en el
entity
elemento del menú en lugar del elemento y dejar que Drupal maneje la visualización del elemento del menú.Para acceder al menú por rol, consulte este módulo: https://www.drupal.org/project/menu_item_role_access
fuente
hook_link_alter()
no se considera un reemplazohook_translated_menu_link_alter()
ya que solo hay unas pocas claves que pueden modificarse, y la clave de acceso no es una de ellas.Desde drupal.org en / node / 2122241:
Probablemente podría usar hook_menu_links_discovered_alter para su escenario.
Editar: desea editar el permiso para acceder a ese enlace, por lo que automáticamente no aparece en el menú.
Lea en drupal.org: / node / 2311427
También debe leer este artículo https://www.lullabot.com/articles/what-happened-to-hook_menu-in-drupal-8 (desplácese hacia abajo hasta "Control de acceso" y "Hook_Menu_Alter").
Espero que esto ayude.
fuente