Am ajuns la o soluție folosind o funcție de preproces. O pereche cheie/valoare este adăugată la nodul părinte. Numit „headline_level”, acesta este referit ulterior de către copil și se adaugă +1. Acest număr este atribuit unei variabile ramuri ca număr al titlului, „headline_level” este mărit cu 1 pentru copil dacă are copii.
În această imagine vedem un „birou” părinte care trage nodurile copil ca câmpuri.
Diagrama de nivel
Părinte (h1)
|_ Copil (h2) (vezi imaginea)
|_ Nepot (h3)
|_ Strănepotul (h4)
Funcția de preprocesare pentru temă
funcția THEME_preprocess_HOOK(&$variabile) {
$nod = $variabile['nod'];
/**
* Nivelul titlului părintelui
* Afișează structura logică a titlului
* Aplică o valoare mai mare pentru „headline_level” pentru tipurile de conținut subordonate; folosit în „/templates/node--HOOK.html.twig”
*/
if ($node->_referringItem) {
// Variabile
$contor = 1; // începe nivelul de la 1
// Adăugați „headline_level” la nodul HOOK
$nod->headline_level = $contor;
$parentHeadline = $node->_referringItem->getEntity()->headline_level;
// Verificați nodul pentru $parentHeadline else $counter, setați variabila twig
if (isset($parentHeadline)) {
// Mărește „headline_level” cu 1
++$parentHeadline; // adauga 1
$nod->headline_level = $parentHeadline;
$variables['office_headline_level'] = $parentHeadline;
} altfel {
$variables['headline_level'] = $contor;
}
}
Șablon Twig pentru tipul de conținut
<div>
<h{{ headline_level ?: 2 }}>{{ label }}</h{{ headline_level ?: 2 }}>
{{ content.field_people }}
</div>
După cum sa menționat în comentarii, aceste birouri ar fi trebuit să fie o taxonomie. Cu toate acestea, acestea au fost create ca tipuri de conținut și au fost referite prin câmpuri.