matterne.eu

¯\_(ツ)_/¯

Shopware 6: Probleme mit dem XML-Feed für Google

Wie alles mit Shopware 6 ist auch das Bereitstellen eines XML-Feeds unnötig kompliziert bzw. klappt nicht so wirklich immer. Angelegt ist ein Feed z.B. für die Google Search Console auf den ersten Blick schnell. Wer hier bei der rot markierten Auswahl einfach das Google XML auswählt, muss nur noch ein paar weitere einfache Angaben machen:

Doch manchmal ist es nicht ganz so einfach, denn beim Testen kam folgende Fehlermeldung:

Failed rendering string template using Twig: Failed rendering string template using Twig: Impossible to access an attribute ("translated") on a null variable in "8…k" at line 27.

Wobei „8…k“ für den individuellen Schlüssel steht und „line 27“ auch je nach Version anders lauten kann. Wichtig ist bei der Fehlermeldung nur die Erkenntnis, das der Fehler offenbar in Zeile 27 liegt.

Mit Klick auf das schwarz markierte Tab kommen wir dann ins eigentliche Template, das in die Bereiche Kopfzeile, Produktzeile und Fußzeile aufgeteilt ist.

Zeile 27 ist dafür zuständig das Feld brand im späteren XML-Feed einzufügen, liest seinen Inhalt also aus dem Hersteller (Marke) des jeweiligen Produkts.

Gibt es keinen Hersteller bzw. wegen der Schreibweise oder aus anderen Gründen ein Problem beim Auslesen, wird der ganze XML-Feed nicht ausgegeben.

Im Original-Template für Google Shoping XML lautet die entsprechende Zeile wie folgt:

<g:brand>{{ product.manufacturer.translated.name|escape }}</g:brand>

Es würde zwar auch funktionieren {{ product.manufacturer.translated.name|escape }} einfach zu entfernen und die Hersteller per Hand nachzutragen, das ist aber selbst bei kleineren Shops schon Unsinn.

Stattdessen sollte man die Zeile wie folgt anpassen:

<g:brand>{%- if product.manufacturer -%}{{ product.manufacturer.translated.name|escape }}{%- endif -%}</g:brand>

Das Endergebnis sieht dann so aus:

Im Grund wird durch diese Änderung eine IF-Abfrage eingefügt, die abfragt, ob das Produkt einem Hersteller zugewiesen wurde. Ist das der Fall, wird dieser ins XML-Feed unter Tag brand übernommen. Gibt es keinen, bleibt das Feld hier einfach leer.

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert