În ce intri $hook
nu spune pentru ce meniu este apelată funcția de preprocesare. Este simplă o sugestie pe care o primește Drupal ThemeManager::render()
.
// Invocă hook_theme_suggestions_HOOK().
$suggestions = $this->moduleHandler->invokeAll('theme_suggestions_' . $base_theme_hook, [
$variabile,
]);
// Dacă implementarea temei a fost invocată cu o sugestie directă a temei
// cum ar fi '#theme' => 'node__article', adăugați-l la matricea de sugestii înainte
// invocând sugestia alter hooks.
if (isset($info['carlig de bază'])) {
$sugestii[] = $hook;
}
// Invocă hook_theme_suggestions_alter() și
// hook_theme_suggestions_HOOK_alter().
$hooks = [
„sugestii_teme”,
'temă_sugestii_' . $base_theme_hook,
];
$this->moduleHandler->alter($hooks, $suggestions, $variables, $base_theme_hook);
$this->alter($hooks, $sugestii, $variables, $base_theme_hook);
// Verificați dacă fiecare sugestie există în registrul de teme și, dacă da,
// folosiți-l în locul cârligului de bază. De exemplu, o funcție poate folosi
// '#theme' => 'nod', dar un modul poate adăuga 'node__article' ca sugestie
// prin hook_theme_suggestions_HOOK_alter(), permițând ca o temă să aibă
// un fișier șablon alternativ pentru nodurile articol.
foreach (array_reverse($sugestii) ca $sugestie) {
dacă ($theme_registry->are($sugestie)) {
$info = $theme_registry->get($sugestie);
pauză;
}
}
olivero_theme_suggestions_menu_alter()
este unul dintre cârligele care modifică sugestiile pentru fișierul șablon de meniu. Ar putea exista un modul care să facă o sugestie similară, în cazul dvs.
funcția olivero_theme_suggestions_menu_alter(&$sugestii, matrice $variabile) {
if (isset($variables['atribute']['regiune'])) {
$suggestions[] = 'meniu__' . $variables['atribute']['regiune'];
}
}
Ceea ce căutați este numele aparatului de meniu, stocat în $variables['nume_meniu']
așa cum este documentat în menu.html.twig.
Dacă scopul este ascunderea unui element de meniu, utilizarea acelui cârlig de preprocesare nu este soluția. Pentru a ascunde un element de meniu este suficient, de exemplu, pentru a evita ca utilizatorul conectat în prezent să aibă acces la ruta folosită pentru acel element de meniu. În acest caz, Drupal nu va afișa elementul de meniu.