Ich möchte den Menü-Link in Drupal 8 ändern. In Drupal 7 können wir dies mit erreichen 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;
}
}
}
In Drupal 7 verstecke / deaktiviere ich das Menü basierend auf einigen Bedingungen wie der Benutzer-ID.
Ebenso möchte ich den Menülink in Drupal 8 ändern. Wie kann ich das erreichen?
hook_translated_menu_link_alter() has been replaced by hook_menu_link_load()
, ich weiß nicht, ob es richtig oder falsch ist, ich habe dies gerade gefunden. Könnte sein, dass Sie erkennen können. Wenn ja, lass es mich auch wissen.Antworten:
HOOK_link_alter wäre ein D8-Äquivalent zu hook_translated_menu_link_alter:
Weitere API-Informationen finden Sie unter Drupal 8- Klassen-URL .
Sie können jedoch Hook_preprocess_HOOK () als solches verwenden:
Nur
path
oben überprüfen , aber es zeigt, dass Sie einen einzelnen Menüpunkt basierend auf bestimmten Kriterien ausblenden können.Abhängig von Ihren Anforderungen können Sie für die Zugriffsbeschränkungen das Routing und die Berechtigungen basierend auf dem
entity
Menüelement anstelle des Menüelements überprüfen und Drupal die Anzeige des Menüelements überlassen.Informationen zum Menüzugriff nach Rollen finden Sie in diesem Modul: https://www.drupal.org/project/menu_item_role_access
quelle
hook_link_alter()
wird nicht als Ersatz angesehen,hook_translated_menu_link_alter()
da nur wenige Schlüssel geändert werden können und der Zugriffsschlüssel keiner davon ist.Von drupal.org unter / node / 2122241:
Sie könnten wahrscheinlich hook_menu_links_discovered_alter für Ihr Szenario verwenden.
Bearbeiten: Sie möchten die Berechtigung zum Zugriff auf diesen Link bearbeiten, damit er nicht automatisch im Menü angezeigt wird.
Lesen Sie weiter auf drupal.org: / node / 2311427
Sie sollten auch diesen Artikel https://www.lullabot.com/articles/what-happened-to-hook_menu-in-drupal-8 lesen (scrollen Sie nach unten zu "Access Control" und "Hook_Menu_Alter").
Ich hoffe das hilft.
quelle