เดอะ menu_link_content
คำจำกัดความของเอนทิตีประกอบด้วยข้อมูลที่เกี่ยวข้องกับคำถามของคุณ กล่าวคือตารางฐานข้อมูลที่มีความสัมพันธ์ระหว่างพ่อแม่และลูกจะเป็น menu_link_content_data
.
ด้านล่างนี้คือตัวอย่างโค้ดที่จะส่งอาร์เรย์ของโหนดรหัสที่กำหนดให้กับโหนดพาเรนต์ โดยมีเงื่อนไขว่าต้องมีลิงก์เมนูแนบกับโหนด
รหัสนี้ใช้ API ของ Drupal แทนการสืบค้น SQL
<?php
// รับรูทตามโหนดที่กำหนด เช่น โหนด 58
$menu_link_root_entities = \Drupal::entityTypeManager()
->getStorage('menu_link_content')
->loadByProperties([
'ลิงค์' => [
'uri' => 'entity:node/58'
]
]
);
$menu_link_root = รีเซ็ต ($menu_link_root_entities);
// ต้องเรียกสิ่งนี้เพื่อสร้างอินสแตนซ์ของบริการ tree_storage
$menu_tree = \Drupal::menuTree();
// รับเอนทิตีเนื้อหาลิงก์เมนูตามพร็อพเพอร์ตี้หลัก
$menu_links = \Drupal::service('menu.tree_storage')->loadByProperties([
// ต้องการค่าตัวกรอง เช่น menu_link_content:8031d182-7a0b-4798-839a-6c66bdd1f27b
'parent' => 'menu_link_content:' $menu_link_root->uuid(),
]) ?: [ ];
$node_ids = array_map(ฟังก์ชัน($v){
ส่งคืน $v['route_parameters']['node'];
}, $menu_links);
หวังว่านี่จะช่วยได้ ขอให้โชคดี!