Я хочу изменить ссылку меню в Drupal 8. В Drupal 7 мы можем добиться этого, используя 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;
}
}
}
В Drupal 7 я скрываю / отключаю меню, основываясь на некоторых условиях, таких как идентификатор пользователя.
Точно так же я хочу изменить ссылку меню в Drupal 8. Как мне этого добиться?
hook_translated_menu_link_alter() has been replaced by hook_menu_link_load()
, я не знаю, правильно это или неправильно, я просто нашел это. Может быть, вы можете разобрать. Если, дайте мне также знать.Ответы:
HOOK_link_alter будет одним эквивалентом D8 для hook_translated_menu_link_alter:
См. URL класса Drupal 8 для получения дополнительной информации об API.
Тем не менее, вы можете использовать Hook_preprocess_HOOK () как таковой:
Просто проверка
path
выше, но это показывает, что вы можете скрыть один пункт меню на основе определенных критериев.Что касается ограничений доступа, в зависимости от ваших потребностей, вы можете взглянуть на маршрутизацию и разрешения на основе
entity
вместо пункта меню и позволить Drupal обрабатывать отображение пункта меню.Для доступа к меню по ролям посмотрите на этот модуль: https://www.drupal.org/project/menu_item_role_access
источник
hook_link_alter()
не рассматривается как замена,hook_translated_menu_link_alter()
так как есть только несколько ключей, которые могут быть изменены, и ключ доступа не является одним из них.С drupal.org в / node / 2122241:
Возможно, вы могли бы использовать hook_menu_links_discovered_alter для вашего сценария.
Изменить: Вы хотите изменить разрешение на доступ к этой ссылке, чтобы она автоматически не отображалась в меню.
Читайте на drupal.org: / узел / 2311427
Вам также следует прочитать эту статью https://www.lullabot.com/articles/what-happened-to-hook_menu-in-drupal-8 (прокрутите вниз до «Контроль доступа» и «Hook_Menu_Alter»).
Надеюсь, это поможет.
источник