Ich habe eine Ansicht mit einer Reihe von Feldern und gestalte diese Felder wie folgt:
views-view-fields.html.twig
In meiner .theme-Datei verwende ich auch eine Vorverarbeitungsfunktion, um zusätzliche Variablen an die obige Vorlage zu übergeben.
function theme_preprocess_views_view_fields(&$vars) {
$vars['my_var'] = 'hello';
}
In der Zweigvorlage kann ich also Folgendes tun:
{% for field in fields -%}
{{my_var}}
{%- endfor %}
Dies funktioniert wie ein Zauber für die ersten geladenen Felder, aber wenn ich auf "Mehr laden" drücke oder exponierte Filter verwende, um die Ansicht herauszufiltern, haben die anderen geladenen Elemente nicht my_var.
Jetzt "kinting" my_var direkt in der Vorlagendatei. Ich habe gesehen, dass my_var für alle anderen Elemente, die nach Ajax geladen wurden, NULL ist, und dies hat mich zu dem Gedanken gebracht, dass das Problem darin besteht, dass theme_preprocess_views_view_fields einmal aufgerufen wird, wenn die Seite zum ersten Mal geladen wird und vom Ajax-Aufruf vollständig ignoriert wird.
Sollte dieser Vorprozess nicht vom Ajax-Aufruf aufgerufen und verarbeitet werden, den Drupal in der Ansicht selbst ausführt?
Wenn nicht, gibt es eine Möglichkeit, Drupal abzufragen, um diesen Hook erneut auszuführen, wenn andere Elemente geladen werden?
Vielen Dank!
Antworten:
In der Vorlage "views-view-fields.html.twig" werden drei Variablen zurückgegeben: "view", "fields", "row". Sie können dies hier sehen .
Um Ihre benutzerdefinierten Variablen hinzuzufügen, müssen Sie sie wie unten beschrieben in diese drei Variablen einfügen
und in unserer Vorlage "views-view-fields.html.twig" drucken wir int so
quelle