Wie füge ich einer Zweigfeldvorlage eine Variable hinzu?

9

Auf einer Knotenseite möchte ich den Knotentitel neben einem anderen Feld (dem Beispielfeld) zur Ausgabe hinzufügen.

Ich habe eine neue field--field-example.html.twigVariable erstellt, kann jedoch nicht auf die Knotentitelvariable zugreifen, da diese in der Feldvorlage nicht verfügbar ist.

Ich muss die Variablen in den Themenvorprozess einfügen : themename.theme.

Wie füge ich die Variable hinzu themename.themeund was wäre der entsprechende Eintrag in der field--field-example.html.twig?

Taylor Taff
quelle
Verwenden Sie hook_preprocess_node, um den Wert aus dem Feld zu extrahieren, das Sie in der Vorlage verwenden möchten.
@IvanJaros, ich habe die Frage jetzt aktualisiert.
Taylor Taff

Antworten:

15

Da Sie nach der Übergabe des Knotentitels als Variable über die .theme-Datei gefragt haben, können Sie template_preprocess_field verwenden , um Folgendes zu tun:

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

Dann können field--field-example.html.twigSie in Ihrem einfach nur {{node_title}}den Knotentitel rendern.

Siehe auch die Antwort von 4k4 unten.

Janey
quelle
Ich habe versucht, Ihre Antwort so zu bearbeiten, dass sie die von 4k4 bereitgestellte enthält, da sie korrekt ist, aber meine Bearbeitung wurde abgelehnt, da sie als nicht relevant erachtet wurde ...
Taylor Taff
@ TaylorTaff Wer genehmigt Änderungen? Ich habe es nie gesehen. Versucht zu bearbeiten, um die Antwort unten aufzunehmen.
Janey
@Janey Viele Benutzer mit genügend Abzeichen können solche Änderungen überprüfen. Ich habe Ihre Antworten für zukünftige Überprüfungen mit einem Lesezeichen versehen. Noch eine Frage: Seid ihr sicher, dass $variables['element']['#object']->getTitle();das fangbar ist preprocess_field? Weil dies tatsächlich meine Frage hier beantworten würde: drupal.stackexchange.com/questions/197497/…
nilsun
11

In den Variablen der Feldvorlage ist ein Knotenobjekt verfügbar, sodass Sie keine Vorverarbeitungsfunktion benötigen.

So erhalten Sie den Titel vom Knoten in einer Feldvorlage:

{{ element['#object'].label }}
4k4
quelle
Dies beantwortet die Frage, aber da die andere Antwort von Janey nützlicher sein wird, habe ich dies zu dieser Antwort hinzugefügt und als akzeptiert markiert.
Taylor Taff
1
Ihre Frage stand jedoch unter der falschen Annahme: "Ich kann jedoch nicht auf die Knotentitelvariable zugreifen, da sie in der Feldvorlage nicht verfügbar ist."
4k4
Ja 4k4, Sie haben Recht, meine Frage war falsch.
Taylor Taff