Do drupal.org em / node / 2122241:
Alterando links de menu e adicionando links de menu dinamicamente
Os itens de menu definidos estaticamente podem ser alterados usando hook_menu_links_discovered_alter () (mas observe que não há hook_menu_link_discovered (), os links do menu são criados a partir dos arquivos .yml, conforme explicado acima). Este gancho também pode ser usado para adicionar novos itens de menu dinâmico.
Com mais freqüência, convém usar uma classe deriver para adicionar novos plugins de link de menu. Por exemplo, os links de menu fornecidos pelo Views são adicionados ao views.links.menu.yml, que especifica a classe deriver \ Drupal \ views \ Plugin \ Derivative \ ViewsMenuLink.
Por fim, você pode usar o gerenciador de plugins diretamente para adicionar, atualizar e remover definições.
Você provavelmente poderia usar hook_menu_links_discovered_alter para o seu cenário.
Editar: você deseja editar a permissão para acessar esse link, para que ele não apareça automaticamente no menu.
Leia em drupal.org: / node / 2311427
Drupal 8
No Drupal 8, você pode oferecer suporte a permissões dinâmicas fazendo referência a uma função que definirá dinamicamente essas permissões. Esse retorno de chamada define as permissões para o módulo de filtro do núcleo.
// 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;
}
}
Você também deve ler este artigo https://www.lullabot.com/articles/what-happened-to-hook_menu-in-drupal-8 (role para baixo até "Controle de acesso" e "Hook_Menu_Alter").
Eu espero que isso ajude.
hook_translated_menu_link_alter() has been replaced by hook_menu_link_load()
, não sei se está certo ou errado, apenas encontrei isso. Pode ser que você possa entender. Se, me avise também.