Moin!
Die Variablen in Twig bilden nicht nur Arrays, sondern sogar die ganzen Objekte aus dem Core ab. Das hat den unfassbar praktischen Nutzen, dass wir im Template selbst auf die Objekt-Methoden zugreifen können, also auch die getter-Funktionen.
Das bedeutet, praktisch angewandt, dass so etwas hier möglich ist:
{{ (page.product.sortedProperties.getElements|first).getName }}
Vor allem getElements
oder getEntities
bringen meistens das gewünschte Objekt.
Bei dem oberen Code aber bitte beachten, dass dies lediglich die erste PropertyGroup ausgibt! Um alle Gruppen aufzulisten, müsste das von einem Foreach umschlossen werden, in etwa so (vereinfacht):
{% for group in page.product.sortedProperties %}
<strong>{{ group.getName }}</strong>
<ul>
{% for groupOption in group.getOptions %}
<li>{{ groupOption.getName }}</li>
{% endfor %}
</ul>
{% endfor %}
Der obere Code erzeugt folgende Ausgabe (aus einer lokalen Dev-Installation):
Um zu erfahren, welche Methoden du alles zur Verfügung hast, beachte bitte die Ausgabe von dump()
im Frontend - Dort ist in blauer Farbe zu sehen, welches Objekt auf die jeweiligen Variablen zugewiesen ist. Verfolge den Pfad parallel bei Shopware auf Github, um die Objekt-Klassen aufzurufen; Anhand des Beispiels:
/Core/Content/Property/PropertyGroupEntity.php und
/Core/Content/Property/Aggregate/PropertyGroupOption/PropertyGroupOptionEntity.php
Am Ende muss man wahrscheinlich trotzdem noch ein bisschen probieren. Ergänzend kann ich euch noch die Twig-Dokumentation ans Herz legen:
Twig - for („loop.index“ hier besonders interessant)
Twig - first (Erstes Kind eines Arrays)
Twig - last (Letztes Kind eines Arrays)
… Es gibt noch mehr Möglichkeiten, wie slice
oder split
, aber da würde ich jetzt erstmal nicht weiter drauf eingehen. In der Doku ist aber alles zu finden
Hoffe, es hilft!
LG;LA
Edit: Kleiner Hinweis noch. Die getName
Methode von oben ist nicht ganz richtig, soll aber erstmal nur zur Veranschaulichung dienen. Im Live-System bitte beachten, dass meistens noch translated.name
verfügbar ist, welches die richtige Sprachvariable für die Kundensprache beinhaltet…