С drupal.org в / node / 2122241:
Изменение ссылок меню и добавление ссылок меню динамически
Статически определенные пункты меню могут быть изменены с помощью hook_menu_links_discovered_alter () (но обратите внимание, что нет hook_menu_link_discovered (), ссылки меню создаются из файлов .yml, как описано выше). Этот хук также можно использовать для добавления новых пунктов динамического меню.
Чаще вы можете захотеть использовать производный класс для добавления новых плагинов ссылок меню. Например, представленные в представлении ссылки на меню добавляются в views.links.menu.yml, который указывает производный класс \ Drupal \ views \ Plugin \ Derivative \ ViewsMenuLink.
Наконец, вы можете напрямую использовать менеджер плагинов для добавления, обновления и удаления определений.
Возможно, вы могли бы использовать hook_menu_links_discovered_alter для вашего сценария.
Изменить: Вы хотите изменить разрешение на доступ к этой ссылке, чтобы она автоматически не отображалась в меню.
Читайте на drupal.org: / узел / 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 (прокрутите вниз до «Контроль доступа» и «Hook_Menu_Alter»).
Надеюсь, это поможет.
hook_translated_menu_link_alter() has been replaced by hook_menu_link_load()
, я не знаю, правильно это или неправильно, я просто нашел это. Может быть, вы можете разобрать. Если, дайте мне также знать.