# Merchant Center / Shopping Feed / Ungültiges oder fehlendes erforderliches Attribut: Verfügbarkeit

**URL:** <https://forum.shopware.com/t/merchant-center-shopping-feed-ungultiges-oder-fehlendes-erforderliches-attribut-verfugbarkeit/55713>\
**Category:** Administration\
**Created:** [12. Oktober 2018 um 10:04 UTC](https://forum.shopware.com/t/merchant-center-shopping-feed-ungultiges-oder-fehlendes-erforderliches-attribut-verfugbarkeit/55713 "2018-10-12T10:04:07Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![\_ShopwareNutzer](https://avatars.discourse-cdn.com/v4/letter/_/5f8ce5/32.png) [@\_ShopwareNutzer](https://forum.shopware.com/u/_ShopwareNutzer)\
**Post date:** [12. Oktober 2018 um 10:04 UTC](https://forum.shopware.com/t/merchant-center-shopping-feed-ungultiges-oder-fehlendes-erforderliches-attribut-verfugbarkeit/55713/1 "2018-10-12T10:04:07Z")

</div>

Liebe Shopwareianer,

ich bin noch recht unerfahren im Umgang mit Shopware und hoffe, ich bin mit meiner Frage in diesem Forum richtig. Seit gestern versuche ich, im Google Merchant Center einen Shopping Feed anzulegen, der unsere aktiven Artikel ausliest. Dazu habe ich unter „Produktexporte“ die Datei „export.txt“ (Google Produktsuche) kopiert und leicht modifiziert. Dort steht nun in der Kopfzeile folgendes:

```
{strip}
id{#S#}
titel{#S#}
beschreibung{#S#}
link{#S#}
bild_url{#S#}
ean{#S#}
gewicht{#S#}
marke{#S#}
mpn{#S#}
zustand{#S#}
produktart{#S#}
preis{#S#}
versand{#S#}
standort{#S#}
währung
availability
{/strip}{#L#}

```

Im Template steht folgender Code:

```
{strip}
{$sArticle.ordernumber|escape}{#S#}
{$sArticle.name|strip_tags|strip|truncate:80:"...":true|escape|htmlentities}{#S#}
{$sArticle.description_long|strip_tags|html_entity_decode|trim|regex_replace:"#[^\wöäüÖÄÜß\.%&-+]#i":""|strip|truncate:500:"...":true|htmlentities|escape}{#S#}
{$sArticle.articleID|link:$sArticle.name|escape}{#S#}
{$sArticle.image|image:1}{#S#}
{$sArticle.ean|escape}{#S#}
{if $sArticle.weight}{$sArticle.weight|escape:"number"}{" kg"}{/if}{#S#}
{$sArticle.supplier|escape}{#S#}
{$sArticle.suppliernumber|escape}{#S#}
Neu{#S#}
{$sArticle.articleID|category:" > "|escape}{#S#}
{$sArticle.price|escape:"number"}{#S#}
DE::DHL:{$sArticle|@shippingcost:"prepayment":"de"}{#S#}{#S#}
{$sCurrency.currency}
{if $sArticle.esd}Auf Lager {elseif $sArticle.instock>0}Auf Lager
{elseif $sArticle.releasedate && $sArticle.releasedate|strtotime > $smarty.now}Vorbestellt
{elseif $sArticle.shippingtime}Auf Lager {else}Nicht auf Lager{/if}
{/strip}{#L#}

```

Leider ergibt der Versuch, den Feed mit dem Merchant Center zu verknüpfen, folgende Fehlermeldungen:

_error_ Ungültiges oder fehlendes erforderliches Attribut: Verfügbarkeit221 Alle

_error_ Unzureichende Produktkennzeichnungen: Zwei von drei Attributen fehlen (‚GTIN‘ [gtin], ‚Marke‘ [brand], ‚MPN‘ [mpn]).219 Alle

_error_ Ungültiger GTIN-Wert

&nbsp;

Ich habe bereits in Erfahrung gebracht, dass die in Shopware vorbelegten Spezifikationen nicht mehr den aktuellen Anforderungen von Google entsprechen. Deswegen habe ich oben auch die Zeile zur Verfügbarkeit (availability) ergänzt, da ich dachte, so zumindest diesen Fehler beseitigen zu können. Das hat leider nicht geklappt und ich erhalte nun eben obige Fehlermeldungen.

&nbsp;

Da ich leider sehr unbedarft bin, würde ich mich sehr freuen, falls mir vielleicht jemand einen Hinweis geben könnte, wo der Fehler liegt. Meine eigene Recherche hat leider nur ergeben, dass die Eigenschaft „Verfügbarkeit“ von Google gefordert wird. Ob die obige Syntax stimmt, weiß ich jedoch nicht. Ich habe verschiedene andere Code-Varianten probiert, jedoch erfolglos.

&nbsp;

Wir nutzen gegenwärtig noch Shopware 5.4.5.

&nbsp;

Für jede Hilfe bereits im Voraus vielen Dank!

---

<div class="post-metadata">

**Author:** ![simplybecause](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/simplybecause/32/7845_2.png) [@simplybecause](https://forum.shopware.com/u/simplybecause)\
**Post date:** [12. Oktober 2018 um 10:46 UTC](https://forum.shopware.com/t/merchant-center-shopping-feed-ungultiges-oder-fehlendes-erforderliches-attribut-verfugbarkeit/55713/2 "2018-10-12T10:46:16Z")

</div>

Du muss Dich schon an den Aufbau halten. Am Ende jeder Zeil (außer der Letzten) steht EIN {#S#}.  
Du hast Zeilen mit doppelten {#S#}  
In Deiner Kopfzeile folgt nach Versand der Standort.  
In Deinem Template folgt nach  
DE::DHL:{$sArticle|@shippingcost:„prepayment“:„de“}{#S#}{#S#} die Währung {$sCurrency.currency}.

Am einfachten ist es, Kopfzeile und Template in einem Editor mit Zeilennummerierung zu öffnen.

---

<div class="post-metadata">

**Author:** ![\_ShopwareNutzer](https://avatars.discourse-cdn.com/v4/letter/_/5f8ce5/32.png) [@\_ShopwareNutzer](https://forum.shopware.com/u/_ShopwareNutzer)\
**Post date:** [16. Oktober 2018 um 10:35 UTC](https://forum.shopware.com/t/merchant-center-shopping-feed-ungultiges-oder-fehlendes-erforderliches-attribut-verfugbarkeit/55713/3 "2018-10-16T10:35:53Z")

</div>

Vielen Dank für Deine Antwort! Das war tatsächlich die Lösung. (Hätte ich auch selber darauf kommen können). : )

Noch eine weitere Frage: Das Abrufen des Feeds generiert nun die Fehlermeldung „Unzureichende Produktkennzeichnungen: Zwei von drei Attributen fehlen (‚GTIN‘ [gtin], ‚Marke‘ [brand], ‚MPN‘ [mpn])“. Das ist an sich nicht verwunderlich, da bei einigen Artikel tatsächlich EAN und Herstellernummer fehlen, die ich gerade ergänze. Wie sieht es jedoch mit Artikel aus, die weder über EAN noch Herstellernummer verfügen? Lassen sich diese irgendwie aus dem Feed herausfiltern oder gibt es für diese Fälle vielleicht eine andere Lösung?

Sodann ist mir leider noch nicht ganz klar, wo ich bei Shopware eine „Marke“ (brand) hinterlegen kann. Den Hersteller habe ich eigentlich überall angegeben, aber scheinbar fordert Google noch eine weitere Angabe - nur weiß ich eben leider nicht, wo ich diese in der Artikelmaske hinterlegen kann. Kann mir vielleicht jemand helfen?

---

<div class="post-metadata">

**Author:** ![simplybecause](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/simplybecause/32/7845_2.png) [@simplybecause](https://forum.shopware.com/u/simplybecause)\
**Post date:** [16. Oktober 2018 um 15:33 UTC](https://forum.shopware.com/t/merchant-center-shopping-feed-ungultiges-oder-fehlendes-erforderliches-attribut-verfugbarkeit/55713/4 "2018-10-16T15:33:51Z")

</div>

Bist Du der Hersteller der Artikel? Verkaufen noch andere diese Artikel?  
Siehe auch [gtin: Definition - Google Merchant Center Help](https://support.google.com/merchants/answer/6324461)

Die “Hersteller” nutzen wir als Marken.  
Da haben wir für einige Artikel einen Hersteller/Marke namens “Noname”, weil die Marke irrelvant war und es keine EANs gab, bzw. dieses interne des Lieferanten waren.  
Die haben wir dann in der Feedkonfiguration ausgeschlossen.

&nbsp;

---

<div class="post-metadata">

**Author:** ![SW5Nutzer](https://avatars.discourse-cdn.com/v4/letter/s/bc79bd/32.png) [@SW5Nutzer](https://forum.shopware.com/u/SW5Nutzer)\
**Post date:** [19. Oktober 2018 um 17:31 UTC](https://forum.shopware.com/t/merchant-center-shopping-feed-ungultiges-oder-fehlendes-erforderliches-attribut-verfugbarkeit/55713/5 "2018-10-19T17:31:54Z")

</div>

```
	{if $sArticle.esd}Auf Lager{elseif $sArticle.instock>0}Auf Lager{elseif $sArticle.releasedate && $sArticle.releasedate|strtotime > $smarty.now}Vorbestellt{elseif $sArticle.shippingtime}Auf Lager{else}Nicht auf Lager{/if}
	{$sArticle.supplier|escape}
	{$sArticle.ean|escape}
	{$sArticle.ean|escape}

```

Für den Google Merchant reicht das. EAN’s sind aber Produkte eindeutig zugewiesen, da solltest du nicht anfangen EAN’s frei zu erfinden… das mögen die garnicht und google ist da nicht gerade zimperlich. Du kannst aber auch im Merchant-Center Regeln zuweisen, wie zu verfahren mit fehlenden Angaben. An

---

<div class="post-metadata">

**Author:** ![KingJah](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/kingjah/32/15438_2.png) [@KingJah](https://forum.shopware.com/u/KingJah)\
**Post date:** [15. Dezember 2018 um 07:44 UTC](https://forum.shopware.com/t/merchant-center-shopping-feed-ungultiges-oder-fehlendes-erforderliches-attribut-verfugbarkeit/55713/6 "2018-12-15T07:44:10Z")

</div>

Statt den Produkteexport zu nutzen habe ich mir eine SQL Abfrage gebastelt um den&nbsp;Google Merchant Center Shopping Feed mit meinen Büchern zu füttern:

select &nbsp;

&nbsp;ad.ordernumber as id,

&nbsp;a.name as titel,

&nbsp;a.description as beschreibung,

&nbsp;concat('[https://www.meinSeite.ch/detail/index/sArticle/’,a.id,’/sCategory/’,c.categoryId](https://www.king-jah.ch/detail/index/sArticle/',a.id,'/sCategory/',c.categoryId)) as produktUrl,&nbsp;

&nbsp;‘neu’ as zustand,

&nbsp;concat(round(ap.price+ap.price\*ct.tax/100,2), ’ CHF’) as preis,

&nbsp;‘auf Lager’ as Verfuegbarkeit,

&nbsp;concat(‘[https://www.meineSeite.ch/media/image/](https://www.king-jah.ch/media/image/)’,

&nbsp;&nbsp; replace(substring(md5(m.path),1,2),‘ad’,‘g0’),’/’,

&nbsp;&nbsp; replace(substring(md5(m.path),3,2),‘ad’,‘g0’),’/’,

&nbsp;&nbsp; replace(substring(md5(m.path),5,2),‘ad’,‘g0’),’/’,

&nbsp;&nbsp; replace(m.path,‘media/image/’,’’)) as bildlink,

&nbsp;replace(replace(replace(ad.suppliernumber,‘ISBN’,’’),’-’,’’),’ ‘,’’) as gtin,

&nbsp;null as mpn,

&nbsp;null as marke,

&nbsp;null as googleProduktkategorie,

&nbsp;case when ad.shippingfree=0 then ‘CH:::7.00 CHF’ else ‘CH:::0.00 CHF’ end as versand

from s\_articles a

inner join s\_articles\_details ad

&nbsp;on ad.articleId = [a.id](http://a.id)

&nbsp;and ad.suppliernumber like ‘ISBN%’

&nbsp;and ad.instock \> 0&nbsp;

inner join s\_articles\_prices ap

&nbsp;on ap.articleId = [a.id](http://a.id)

&nbsp;and ap.pricegroup=‘EK’

&nbsp;and ap.price \> 0

inner join s\_core\_tax ct

&nbsp;on [ct.id](http://ct.id) = a.taxid

inner join (

&nbsp;select&nbsp;

&nbsp;c.articleId,

&nbsp;min(c.categoryId) as categoryId

&nbsp; from (

&nbsp; select

&nbsp; ac.articleId,

&nbsp; case when c.active=1 then c.Id else cp.Id end as categoryId

&nbsp; from s\_articles\_categories ac

&nbsp; inner join s\_categories c

&nbsp; on [c.id](http://c.id) = ac.categoryId

&nbsp; left outer join s\_categories cp

&nbsp; on [cp.id](http://cp.id) = c.parent

&nbsp; and cp.active=1

&nbsp;)c group by c.articleId

)c

on c.articleId = [a.id](http://a.id)

inner join s\_articles\_img ai

&nbsp;on ai.articleId = [a.id](http://a.id)

&nbsp;and ai.main = 1

inner join s\_media m

&nbsp;on [m.id](http://m.id) = ai.media\_id

&nbsp;and m.albumID = -1

left outer join s\_articles\_attributes aa

&nbsp;on aa.articleId = [a.id](http://a.id)

where a.active = 1

order by ad.ordernumber
