Hallo zusammen,
beim erstellen des Rezension Feed (nicht Shopping Feed) für das Google Merchant Center komme ich leider nicht weiter. Ich möchte in dem Feed die von Google erforderlichen Pflichtfelder bereitstellen.
Anbei der Auszug aus dem Template:
<review>
{%- if product.productReviews.count > 0 -%}
{%- for reviewer in product.productReviews -%}
<reviewer>
<name>
Anonymous
</name>
{%- if product.productReviews.id is defined -%}
<reviewer_id>
{{ product.productReviews.id }}
</reviewer_id>
{%- endif -%}
</reviewer>
{%- if product.productReviews.createdAt is defined -%}
<review_timestamp>
{{ product.productReviews.createdAt|date('Y-m-dTH:i:s') }}
</review_timestamp>
{%- endif -%}
<title>
{{ product.productReviews.first.title }}
</title>
<content>
{{ product.productReviews.first.content }}
</content>
<products>
<product>
<product_url>
{{ seoUrl('frontend.detail.page', {'productId': product.id}) }}
</product_url>
</product>
</products>
<ratings>
<overall min="1" max="5">
{{ product.productReviews.first.points }}
</overall>
</ratings>
<review_url type="singleton">
{{ seoUrl('frontend.detail.page', {'productId': product.id}) }}
</review_url>
{%- endfor -%}
{%- endif -%}
</review>
Vielleicht kann mir jemand 2 Dinge erklären. Warum wird bei der Abfrage {%- if product.productReviews.id is defined -%} nichts ausgegeben obwohl ich ohne IF-Schleife einen Wert erhalte?
Zweitens möchte ich die For-Schleife verstehen. Da ein Produkt ja auch mehrere Bewertungen haben kann, habe ich die Schleife so eingebaut. Würde es so funktionieren?
Ich habe es ohne die eingeschlossenen IF-Schleifen probiert. Dann erhalte ich jedoch die Fehlermeldung:
Failed rendering string template using Twig: Failed rendering string template using Twig: Neither the property „id“ nor one of the methods „id()“, „getid()“/„isid()“/„hasid()“ or „__call()“ exist and have public access in class „Shopware\Core\Content\Product\Aggregate\ProductReview\ProductReviewCollection“ in „bbb14dfb263fe69e7b83262fefb5e899“ at line 9.
Zeile 9 lautet dabei : {{ product.productReviews.id }}
Wenn ich jedoch dieses änder auf: {{ product.productReviews.first.id }} erhalte ich in der Ausgabe die erste Bewertung so oft, wie die Bewertungsanzahl des Artikels ist.
Ich würde ich freuen, wenn mir das jemand erklären kann. Ich bin mit SW 6.4.20.2 unterwegs.
Viele Grüße,
André