สิ่งที่คุณได้รับใน $ตะขอ ไม่ได้บอกว่าเมนูใดที่เรียกใช้ฟังก์ชันการประมวลผลล่วงหน้า เป็นคำแนะนำง่ายๆ ที่ Drupal กำลังดำเนินการอยู่ ThemeManager::render().
  // เรียกใช้ hook_theme_suggestions_HOOK()
  $suggestions = $this->moduleHandler->invokeAll('theme_suggestions_' . $base_theme_hook, [
    $ตัวแปร
  ]);
  // หากมีการเรียกใช้ธีมพร้อมกับคำแนะนำธีมโดยตรง
  // เช่น '#theme' => 'node__article' ให้เพิ่มไปยังอาร์เรย์คำแนะนำก่อนหน้า
  // เรียกใช้คำแนะนำแก้ไข hooks
  ถ้า (isset($info['base hook'])) {
    $suggestions[] = $เบ็ด;
  }
  // เรียกใช้ hook_theme_suggestions_alter() และ
  // hook_theme_suggestions_HOOK_alter()
  $ตะขอ = [
    'theme_suggestions',
    'theme_suggestions_' . $base_theme_hook,
  ];
  $this->moduleHandler->alter($hooks, $suggestions, $variables, $base_theme_hook);
  $this->alter($hooks, $suggestions, $variables, $base_theme_hook);
  // ตรวจสอบว่ามีคำแนะนำแต่ละข้ออยู่ในรีจิสทรีของธีมหรือไม่ และถ้ามี
  // ใช้แทน hook ฐาน ตัวอย่างเช่น ฟังก์ชันอาจใช้
  // '#theme' => 'node' แต่โมดูลสามารถเพิ่ม 'node__article' เป็นคำแนะนำได้
  // ผ่าน hook_theme_suggestions_HOOK_alter() ทำให้มีธีม
  // ไฟล์เทมเพลตสำรองสำหรับโหนดบทความ
  foreach (array_reverse($suggestions) เป็น $suggestion) {
    ถ้า ($theme_registry->has($suggestion)) {
      $info = $theme_registry->get($suggestion);
      หยุดพัก;
    }
  }
Olivero_theme_suggestions_menu_alter() เป็นหนึ่งในตะขอที่เปลี่ยนคำแนะนำสำหรับไฟล์เทมเพลตเมนู อาจมีโมดูลที่ทำตามคำแนะนำที่คล้ายกัน ในกรณีของคุณ
ฟังก์ชัน Olivero_theme_suggestions_menu_alter (&$ คำแนะนำ, อาร์เรย์ $ ตัวแปร) {
  ถ้า (isset($variables['attributes']['region'])) {
    $suggestions[] = 'เมนู__' $variables['attributes']['region'];
  }
}
สิ่งที่คุณกำลังมองหาคือชื่อเครื่องเมนูที่เก็บไว้ใน $ตัวแปร['menu_name'] ตามเอกสารใน menu.html.twig.
หากจุดประสงค์คือการซ่อนรายการเมนู การใช้เบ็ดการประมวลผลล่วงหน้านั้นไม่ใช่วิธีแก้ปัญหา การซ่อนรายการเมนูก็เพียงพอแล้ว ตัวอย่างเช่น เพื่อหลีกเลี่ยงไม่ให้ผู้ใช้ที่เข้าสู่ระบบในปัจจุบันเข้าถึงเส้นทางที่ใช้สำหรับรายการเมนูนั้น ในกรณีนั้น Drupal จะไม่แสดงรายการเมนู