Puncte:0

Ierarhia tipurilor de conținut

drapel in

Sunt destul de nou în Drupal, au tipuri de conținut care circulă în tipuri de conținut pentru copii folosind câmpuri. Rezultatul este ceva de genul acesta.

Tip de conținut Office
Câmp: Tip de conținut Office
- Tipul de conținut Office
- Câmp: Tip de conținut persoană
- Câmp: Tip de conținut persoană
- Câmp: Tip de conținut persoană
- Tipul de conținut Office
-- Câmp: Tip de conținut Office
-- Câmp: Tip de conținut persoană
-- Câmp: Tip de conținut persoană

Am nevoie de un tip de conținut pentru a putea recunoaște că are un părinte sau un bunic. Cu toate acestea, acest director a fost creat folosind tipuri de conținut pentru birouri în loc de taxonomii. Este posibil să extrageți informații ierarhice din tipurile de conținut imbricate? Ar trebui să fie creat tipul de conținut Office ca taxonomie?

Link-uri către detalii și documentație sunt binevenite.

Folosesc Drupal 9.3.x

drapel cn
În Drupal, taxonomiile au ierarhie, dar tipurile de conținut nu. Deci, dacă doriți o ierarhie, probabil că veți găsi mult mai ușor să implementați folosind taxonomia decât să piratați tipurile de conținut pentru a o face singur.
No Sssweat avatar
drapel ua
Singurul lucru care se apropie de asta pentru D9 este [Referințele de entitate corespunzătoare](https://www.drupal.org/project/cer), dar pe baza descrierii nu pare că vă va permite să recunoașteți bunicul. Deci, va trebui să utilizați taxonomia dacă nu doriți să vă creați propriul modul personalizat pentru a gestiona un astfel de arbore de tip de conținut.
Jaypan avatar
drapel de
Puteți crea referințe la entități pentru a crea o ierarhie. Dar nu este clar ce vrei să spui prin „recunoaștere”. De asemenea, nu este clar care este scopul tău final.
drapel in
Vă mulțumesc tuturor pentru ajutor. Pot fi utilizate taxonomii, referințe la entități și chiar adăugarea unui câmp. Am testat câteva dintre ele. Colegul meu a clarificat și a solicitat o soluție de preprocesare, așa că voi aprofunda puțin în PHP avansat.
Puncte:0
drapel in

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. introduceți descrierea imaginii aici

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.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.