Что вы получаете $ крючок
не говорит, для какого меню вызывается функция предварительной обработки. Это просто предложение, которое Drupal улавливает в ТемаМенеджер::рендеринг()
.
// Вызываем hook_theme_suggestions_HOOK().
$suggestions = $this->moduleHandler->invokeAll('theme_suggestions_' . $base_theme_hook, [
$ переменные,
]);
// Если реализация темы была вызвана прямым предложением темы
// как '#theme' => 'node__article', добавьте его в массив предложений перед
// вызов подсказки alter hooks.
если (isset($info['базовый хук'])) {
$suggestions[] = $крючок;
}
// Вызываем hook_theme_suggestions_alter() и
// hook_theme_suggestions_HOOK_alter().
$ крючки = [
'тема_предложения',
'тема_предложения_' . $base_theme_hook,
];
$this->moduleHandler->alter($hooks, $suggestions, $variables, $base_theme_hook);
$this->alter($hooks, $suggestions, $variables, $base_theme_hook);
// Проверяем, существует ли каждое предложение в реестре тем, и если да,
// используем его вместо базового хука. Например, функция может использовать
// '#theme' => 'node', но модуль может добавить 'node__article' в качестве предложения
// через hook_theme_suggestions_HOOK_alter(), что позволяет теме
// альтернативный файл шаблона для узлов статьи.
foreach (array_reverse($suggestions) как $suggestion) {
если ($theme_registry->имеет($предложение)) {
$info = $theme_registry->get($suggestion);
сломать;
}
}
Olivero_theme_suggestions_menu_alter()
является одним из хуков, которые изменяют предложения для файла шаблона меню. В вашем случае может быть модуль, делающий подобное предложение.
function Olivero_theme_suggestions_menu_alter (& $ предложения, массив $ переменных) {
если (isset($variables['атрибуты']['регион'])) {
$предложения[] = 'меню__' . $variables['атрибуты']['регион'];
}
}
То, что вы ищете, это имя машины меню, хранящееся в $переменные['имя_меню']
как задокументировано в меню.html.twig.
Если целью является скрытие пункта меню, использование этого хука предварительной обработки не является решением. Скрыть пункт меню достаточно, например, чтобы вошедший в систему пользователь не имел доступа к маршруту, используемому для этого пункта меню. В этом случае Drupal не покажет пункт меню.