/ node / 2122241のdrupal.orgから:
メニューリンクの変更とメニューリンクの動的な追加
静的に定義されたメニュー項目は、hook_menu_links_discovered_alter()を使用して変更できます(ただし、hook_menu_link_discovered()がないことに注意してください。メニューリンクは、上記のように.ymlファイルから構築されます)。このフックは、新しい動的メニュー項目を追加するためにも使用できます。
多くの場合、派生クラスを使用して新しいメニューリンクプラグインを追加することができます。たとえば、ビューが提供するメニューリンクは、派生クラス\ Drupal \ views \ Plugin \ Derivative \ ViewsMenuLinkを指定するviews.links.menu.ymlに追加されます。
最後に、プラグインマネージャを直接使用して、定義を追加、更新、および削除できます。
シナリオには、おそらくhook_menu_links_discovered_alterを使用できます。
編集:そのリンクへのアクセス許可を編集して、メニューに自動的に表示されないようにします。
drupal.orgで読む:/ node / 2311427
Drupal 8
Drupal 8では、動的アクセス許可を動的に定義する関数を参照することで、動的アクセス許可をサポートできます。このコールバックは、コアのフィルターモジュールの権限を定義します。
// in filter.permissions.yml
permission_callbacks:
- Drupal\filter\FilterPermissions::permissions
// in FilterPermissions.php
class FilterPermissions {
public function permissions() {
$permissions = [];
// Generate permissions for each text format. Warn the administrator that any
// of them are potentially unsafe.
/** @var \Drupal\filter\FilterFormatInterface[] $formats */
$formats = $this->entityManager->getStorage('filter_format')->loadByProperties(['status' => TRUE]);
uasort($formats, 'Drupal\Core\Config\Entity\ConfigEntityBase::sort');
foreach ($formats as $format) {
if ($permission = $format->getPermissionName()) {
$permissions[$permission] = [
'title' => $this->t('Use the @label text format', ['@url' => $format->url(), '@label' => $format->label()]),
'description' => String::placeholder($this->t('Warning: This permission may have security implications depending on how the text format is configured.')),
];
}
}
return $permissions;
}
}
また、この記事https://www.lullabot.com/articles/what-happened-to-hook_menu-in-drupal-8(「Access Control」と「Hook_Menu_Alter」までスクロールしてください)もお読みください。
これがお役に立てば幸いです。
hook_translated_menu_link_alter() has been replaced by hook_menu_link_load()
それが正しいか間違っているかはわかりませんが、これを見つけました。あなたが理解できるかもしれません。もしそうなら、私にも知らせてください。