Những gì bạn nhận được trong móc $
không nói chức năng tiền xử lý được gọi cho menu nào. Đó là một gợi ý đơn giản mà Drupal đang chọn Trình quản lý chủ đề::render()
.
// Gọi hook_theme_suggestions_HOOK().
$suggestions = $this->moduleHandler->invokeAll('theme_suggestions_' . $base_theme_hook, [
biến $,
]);
// Nếu triển khai chủ đề được gọi với đề xuất chủ đề trực tiếp
// like '#theme' => 'node__article', thêm nó vào mảng gợi ý trước
// gọi gợi ý thay đổi hooks.
if (isset($info['base hook'])) {
$suggestions[] = $hook;
}
// Gọi hook_theme_suggestions_alter() và
// hook_theme_suggestions_HOOK_alter().
móc $ = [
'theme_suggestions',
'theme_suggestions_' . $base_theme_hook,
];
$this->moduleHandler->alter($hooks, $suggestions, $variables, $base_theme_hook);
$this->alter($hooks, $suggestions, $variables, $base_theme_hook);
// Kiểm tra xem mỗi đề xuất có tồn tại trong sổ đăng ký chủ đề không và nếu có,
// sử dụng nó thay vì móc cơ sở. Ví dụ, một chức năng có thể sử dụng
// '#theme' => 'node', nhưng mô-đun có thể thêm 'node__article' làm gợi ý
// thông qua hook_theme_suggestions_HOOK_alter(), cho phép chủ đề có
// một tệp mẫu thay thế cho các nút bài viết.
foreach (array_reverse($suggestions) dưới dạng $suggestion) {
nếu ($theme_registry->has($suggestion)) {
$info = $theme_registry->get($suggestion);
nghỉ;
}
}
olivero_theme_suggestions_menu_alter()
là một trong những cái móc làm thay đổi các gợi ý cho tệp mẫu menu. Trong trường hợp của bạn, có thể có một mô-đun thực hiện đề xuất tương tự.
function olivero_theme_suggestions_menu_alter(&$suggestions, mảng $variables) {
if (isset($variables['attributes']['region'])) {
$suggestions[] = 'menu__' . $variables['attributes']['region'];
}
}
Những gì bạn đang tìm kiếm là tên máy menu, được lưu trữ trong $variables['menu_name']
như tài liệu trong menu.html.twig.
Nếu mục đích là ẩn một mục menu, sử dụng hook tiền xử lý đó không phải là giải pháp. Ví dụ, để ẩn một mục menu là đủ để tránh người dùng hiện đang đăng nhập có quyền truy cập vào tuyến đường được sử dụng cho mục menu đó. Trong trường hợp đó, Drupal sẽ không hiển thị mục menu.