it-swarm.com.de

Verwenden von Feldwerten in page.html.twig

Verwenden von Drupal 8.

Ich möchte den Wert eines Feldes (field_date) oben auf meiner Seite in der Kopfzeile anzeigen, daher muss ich ihn in page.html.twig ausgeben. Ich habe jedoch ein Problem damit, was sich meiner Meinung nach auf den Umfang der verfügbaren Variablen beschränkt.

Zur Verdeutlichung: Ich kann field_date problemlos in node.html.twig drucken, indem ich nur Inhalte verwende. Da ich es jedoch so hoch auf der Seite benötige, hoffe ich auf eine Möglichkeit, es in page.html.twig zu drucken.

Ich bin offen für jede Lösung, aber hier ist eine mögliche Lösung, die ich bei der Suche nach demselben Thema gefunden habe:

In THEMENAME.theme

/**
 * Implements template_preprocess_field().
 */
function THEMENAME_preprocess_field(&$variables) {
    $element = $variables['element'];

    if($element['#field_name'] == 'field_date') {
        $variables['promo_date'] = $element[0]['#markup'];
        dpm($variables['promo_date']);
    } 
}

In page.html.twig:

<div class="theme-date">{{ promo_date }}</div>

In diesem Beispiel funktioniert die dpm, aber das promo_date zeigt nichts an. Wenn Sie kint (node) ausführen, wird eine große Anzahl von Methoden zurückgegeben, aber keine scheint die Felder zu sein, die ich benötige. Leider bestand die Lösung, die ich ausgeliehen habe, darin, eine Variable auf Seitenebene zu field.twig.html hinzuzufügen, und ich denke, die Umkehrung des Gültigkeitsbereichs ist das Problem.

3
GFeesh

Wenn Sie das Ergebnis Ihres Codes in THEMENAME_preprocess_field() sehen möchten, müssen Sie {{ promo_date }} In einen field.html.twig Einfügen.

Aber in Ihrer Frage haben Sie nach dem page.html.twig Gefragt. Um auf den Feldwert in dieser Vorlage zuzugreifen, können Sie das Knotenobjekt verwenden, das in der Seitenvorlage vorinstalliert ist. Aber nur, wenn die URL Ihrer Seite einen Knoten enthält. Andernfalls wird eine leere Zeichenfolge zurückgegeben:

{{ node.field_date.value }}
3
4k4