Come aggiungere una variabile a un modello di campo ramoscello?


9

Sulla pagina di un nodo vorrei aggiungere il titolo del nodo all'output insieme a un altro campo (il campo di esempio).

Ho creato un nuovo field--field-example.html.twigma non riesco ad accedere alla variabile del titolo del nodo in quanto non è disponibile nel modello di campo.

Ho bisogno di aggiungere le variabili nella pre-elaborazione tema: themename.theme.

Come faccio ad aggiungere la variabile in themename.themee quale sarebbe la voce corrispondente nel field--field-example.html.twig?


Utilizzare hook_preprocess_node per estrarre il valore dal campo che si desidera utilizzare nel modello.

@IvanJaros, ho aggiornato la domanda ora.
Taylor Taff,

Risposte:


15

Dato che hai chiesto di passare il titolo del nodo come variabile tramite il file .theme, potresti usare template_preprocess_field per fare qualcosa del genere:

  function themename_preprocess_field(&$variables, $hook) {
    if ($variables['element']['#field_name'] == 'field_example') {
      $variables['node_title'] = $variables['element']['#object']->getTitle();
    }
  }

quindi nel tuo field--field-example.html.twigpotresti semplicemente usare {{node_title}}per renderizzare il titolo del nodo.

Vedi anche la risposta di 4k4 di seguito.


Ho provato a modificare la tua risposta per includere quella fornita da 4k4 poiché è corretta ma la mia modifica è stata rifiutata in quanto ritenuta non pertinente ...
Taylor Taff

@TaylorTaff che approva le modifiche? Non l'ho mai visto. Tenterà di modificare per includere la risposta di seguito.
Janey,

@Janey molti utenti con abbastanza badge possono rivedere tali modifiche. Ho aggiunto le tue risposte ai preferiti per future revisioni. Un'altra domanda: siete sicuri che $variables['element']['#object']->getTitle();sia raggiungibile preprocess_field? Perché questo in realtà risponderebbe alla mia domanda qui: drupal.stackexchange.com/questions/197497/…
nilsun

11

C'è un oggetto nodo disponibile nelle variabili del modello di campo, quindi non è necessaria una funzione di preelaborazione.

Per ottenere il titolo dal nodo in un modello di campo:

{{ element['#object'].label }}

Questo risponde alla domanda ma, poiché l'altra risposta di Janey sarà più utile, l'ho aggiunta a quella risposta e contrassegnata come accettata.
Taylor Taff,

1
Ma la tua domanda era sotto il presupposto sbagliato: "ma non riesco ad accedere alla variabile del titolo del nodo in quanto non è disponibile nel modello di campo".
4k4,

Sì 4k4, hai ragione, la mia domanda era errata.
Taylor Taff,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.