ฉันมาถึงวิธีแก้ปัญหาโดยใช้ฟังก์ชันพรีโพรเซส คู่คีย์/ค่าถูกเพิ่มไปยังโหนดพาเรนต์ ตั้งชื่อว่า "headline_level" ซึ่งต่อมาจะอ้างอิงโดยเด็กและเพิ่ม +1 หมายเลขนั้นกำหนดให้กับตัวแปร twig เป็นหมายเลขของบรรทัดแรก "headline_level" จะเพิ่มขึ้น 1 สำหรับเด็กหากตัวมันเองมีลูก
ในภาพนี้เราเห็นผู้ปกครอง "สำนักงาน" ดึงโหนดย่อยเป็นเขตข้อมูล
แผนภาพระดับ
ผู้ปกครอง (h1)
|_ เด็ก (h2) (ดูภาพ)
|_ หลาน (h3)
|_ หลานผู้ยิ่งใหญ่ (h4)
ฟังก์ชันประมวลผลล่วงหน้าสำหรับธีม
ฟังก์ชัน THEME_preprocess_HOOK(&$ตัวแปร) {
$node = $variables['โหนด'];
/**
* ระดับพาดหัวผู้ปกครอง
* แสดงโครงสร้างบรรทัดแรกแบบลอจิคัล
* ใช้ค่าที่สูงกว่ากับ 'headline_level' สำหรับประเภทเนื้อหาย่อย ใช้ใน '/ templates/node--HOOK.html.twig'
*/
ถ้า ($node->_referringItem) {
// ตัวแปร
$เคาน์เตอร์ = 1; // เริ่มต้นระดับที่ 1
// ต่อท้าย 'headline_level' กับโหนด HOOK
$node->headline_level = $เคาน์เตอร์;
$parentHeadline = $node->_referringItem->getEntity()->headline_level;
// ตรวจสอบโหนดสำหรับ $parentHeadline อื่น ๆ $counter ตั้งค่าตัวแปรทวิก
ถ้า (isset($parentHeadline)) {
// เพิ่ม 'headline_level' ขึ้น 1
++$parentHeadline; // เพิ่ม 1
$node->headline_level = $parentHeadline;
$variables['office_headline_level'] = $parentHeadline;
} อื่น {
$variables['headline_level'] = $ตัวนับ;
}
}
เทมเพลต Twig สำหรับประเภทเนื้อหา
<div>
<h{{ headline_level ?: 2 }}>{{ label }}</h{{ headline_level ?: 2 }}>
{{ content.field_people }}
</div>
ตามที่กล่าวไว้ในความคิดเห็น สำนักงานเหล่านี้ควรได้รับการอนุกรมวิธาน อย่างไรก็ตาม พวกมันถูกสร้างขึ้นเป็นประเภทเนื้อหาและอ้างอิงตามฟิลด์