Tôi đã tìm ra giải pháp bằng cách sử dụng chức năng tiền xử lý. Một cặp khóa/giá trị được thêm vào nút cha. Được đặt tên là "headline_level", nó sau đó được đứa trẻ tham chiếu và +1 được thêm vào. Số đó được gán cho một biến twig làm số của dòng tiêu đề, "headline_level" được tăng thêm 1 cho biến con nếu chính nó có con.
Trong hình ảnh này, chúng ta thấy một "văn phòng" cha kéo vào các nút con dưới dạng các trường.
Sơ đồ cấp độ
Phụ huynh (h1)
|_ Con (h2) (xem hình ảnh)
|_ Cháu (h3)
|_ Cháu Lớn (h4)
Chức năng tiền xử lý cho chủ đề
function THEME_pre process_HOOK(&$variables) {
$node = $variables['node'];
/**
* Cấp tiêu đề gốc
* Hiển thị cấu trúc tiêu đề hợp lý
* Áp dụng giá trị cao hơn cho 'headline_level' cho các loại nội dung cấp dưới; được sử dụng trong '/templates/node--HOOK.html.twig'
*/
nếu ($node->_referringItem) {
// Biến
bộ đếm $ = 1; // mức bắt đầu từ 1
// Nối 'headline_level' vào nút HOOK
$node->headline_level = $counter;
$parentHeadline = $node->_referringItem->getEntity()->headline_level;
// Kiểm tra nút cho $parentHeadline khác $count, đặt biến twig
if (isset($parentHeadline)) {
// Tăng 'headline_level' lên 1
++$dòng phụ huynh; // thêm 1
$node->headline_level = $parentHeadline;
$variables['office_headline_level'] = $parentHeadline;
} khác {
$variables['headline_level'] = $counter;
}
}
Mẫu cành cây cho loại nội dung
<div>
<h{{ headline_level ?: 2 }}>{{ label }}</h{{ headline_level ?: 2 }}>
{{ content.field_people }}
</div>
Như đã đề cập trong các nhận xét, các Văn phòng này lẽ ra phải là một Phân loại. Tuy nhiên, chúng được tạo dưới dạng kiểu nội dung và được tham chiếu theo trường.