Google Merchant: Fehlende Mikrodaten für Zustand

Seit einigen taucht in Google Merchant folgende Benachrichtigung auf:

Fehlende Mikrodaten für Zustand

Die automatische Einbettung der Daten ist unter Einstellungen-RDFa aktiviert.
Hat jemand eine Ahnung, wie Google die Infos aus der Artikelseite ausliest?
Informationen zum Preis und zur Verfügbarkeit scheint Google korrekt zu finden.

hier kannst du testen, was google aus deinen RDFa rauslies:
https://developers.google.com/structured-data/testing-tool/

schau mal unter den Grundeinstellungen -> RDFa
da kann man den Zustand der Produkte global festlegen: neu /gebraucht / aufgereitet

In den Grundeinstellungen habe ich den Zustand auf “neu” festgelegt.
Im Quelltext einer Artikeldetailseite findet sich auch diese Zeile:

<div property=“gr:condition” content=“new” xml:lang=“en”></div>

Aber Google scheint diesen Eintrag nicht mehr zu verstehen.
Das Testing-Tool gibt folgendes aus:

Der Typ http://purl.org/goodrelations/v1#Offers ist kein Typ, der Google bekannt ist.

Wie gesagt, ich habe nichts geändert und Google zeigt diese Benachrichtigung erst seit ca. 1 Woche.

Versuch mal dieses Format:

<meta itemprop=“itemCondition” itemtype=“http://schema.org/OfferItemCondition” content=“http://schema.org/NewCondition”/>New

https://support.google.com/merchants/answer/6069143?hl=en

Diese Infoseite wurde am 16.4. aktualisiert.
https://developers.google.com/structured-data/rich-snippets/products

Das würde von der Zeit passen, kann also sein, dass Google seine Anforderungen geändert hat.

MeisterYoda, danke für den Tip. Die Nachricht von Google hatte ich gelesen, wusste aber nicht, was ich anpassen muss bzw. was es für Auswirkungen hat.
Bisher gibt Google auch nur eine Warnung aus.
Da muss ich jetzt einmal schauen, wie ich das in /application/views/…/tpl/rfda/details/details.tpl
einbauen kann

Du kannst die Daten auch mittels Data-Highlighter für Google kenntlich machen. Das funktioniert ganz gut, Vater-Artikel machen allerdings etwas Probleme und ein Feld für den Zustand ist nicht vorgesehen, falls es Dir da drauf ankommt.

Auf den Zustand kommt es Google anscheinend an.
Ich habe jetzt:

  &lt;div itemscope itemtype="http://schema.org/Product"&gt;
  	&lt;meta itemprop="name" content="
  		[{$oProduct-&gt;oxarticles__oxtitle-&gt;value|strip_tags|strip}] [{if $oView-&gt;getActiveLangAbbr()}] xml:lang=[{$oView-&gt;getActiveLangAbbr()}][{/if}]"&gt;
  	&lt;/div&gt;
  	&lt;div itemscope itemtype="http://schema.org/Offer"&gt;		
  		[{if $oView-&gt;getRDFaGenericCondition()}]
  	&lt;meta itemprop="itemCondition" itemtype="http://schema.org/OfferItemCondition" content="[{$oView-&gt;getRDFaGenericCondition()}]"&gt;
  		[{/if}]
  	&lt;meta itemprop="priceCurrency" content="[{$currency-&gt;name}]" &gt;
  	[{assign var=price value=$oProduct-&gt;getPrice()}]
  	&lt;meta itemprop="price" content="[{$price-&gt;getBruttoPrice()}]"&gt;
  	&lt;/span&gt;
  &lt;/div&gt;

am Ende von /…/tpl/rdfa/details/inc/object.tpl eingebaut.
Es sieht so aus, als würde Google das akzeptieren.

Nabend,

ich habe die Dinge unter RDFa die Daten aktiviert. Dennoch werden bei mir im Testing Tool schlicht nichts erkannt.

Auch mit dem Code Schnipsel vom Basteflex habe ich es probiert, aber keine Änderung.

Unabhängig vom Testing Tool, zeigt mir Google Shopping bei allen 3000 Artikeln den Fehler "Fehlende Mikrodaten für Zustand " an.

Hat jemand einen Anhaltspunkt?

Grüße

Du musst Geduld haben. Es kann mehrere Wochen dauern, bis Google alle Artikel neu eingelesen hat. Wenn es allerdings alle Artkel betrifft, hast Du möglicherweise doch noch eine Fehler in der Seite. Bei mir wurde immer nur ein Teil der Artikel bemängelt, und das wurden von Tag zu Tag weniger.

Aber der Test https://developers.google.com/struct.../testing-tool/ zeigt mir nichts erkanntes an.

Hier meine aktuelle /…/tpl/rdfa/details/inc/object.tpl. Damit werden die relevanten Informationen im Test-Tool erkannt.

<div rel=“gr:includes”>
[{if $oProduct->getVariantsCount() || $oView->drawParentUrl()}]
<div typeof=“gr:ProductOrServiceModel” about="[{$sRDFaUrl}]#productdata">
[{else}]
<div typeof=“gr:SomeItems” about="[{$sRDFaUrl}]#productdata">
[{/if}]
[{if $oProduct->oxarticles__oxtitle->value}]
<div property=“gr:name” content="[{$oProduct->oxarticles__oxtitle->value|strip_tags|strip}]" [{if $oView->getActiveLangAbbr()}] xml:lang="[{$oView->getActiveLangAbbr()}]"[{/if}]></div>
[{/if}]
[{oxhasrights ident=“SHOWLONGDESCRIPTION”}]
[{assign var=“oLongdesc” value=$oProduct->getLongDescription()}]
[{if $oLongdesc->value}]
<div property=“gr:description” content="[{oxeval var=$oLongdesc->value|strip_tags|strip }]" [{if $oView->getActiveLangAbbr()}] xml:lang="[{$oView->getActiveLangAbbr()}]"[{/if}]></div>
[{/if}]
[{/oxhasrights}]
<div rel=“foaf:depiction v:image” resource="[{$oView->getActPicture()}]"></div>
<div property=“gr:hasStockKeepingUnit” content="[{$oProduct->oxarticles__oxartnum->value}]" datatype=“xsd:string”></div>
[{if $oProduct->oxarticles__oxmpn->value}]
<div property=“gr:hasMPN” content="[{$oProduct->oxarticles__oxmpn->value}]" datatype=“xsd:string”></div>
[{/if}]
[{if $oProduct->oxarticles__oxean->value}]
<div property=“gr:hasGTIN-14” content="[{$oProduct->oxarticles__oxean->value}]" datatype=“xsd:string”></div>
[{elseif $oProduct->oxarticles__oxdistean->value}]
<div property=“gr:hasGTIN-14” content="[{$oProduct->oxarticles__oxdistean->value}]" datatype=“xsd:string”></div>
[{/if}]
[{if $oView->getRDFaGenericCondition()}]
<div property=“gr:condition” content="[{$oView->getRDFaGenericCondition()}]" xml:lang=“en”></div>
[{/if}]
[{foreach from=$oView->getCatTreePath() item=oCatPath name=“detailslocation”}]
[{if $smarty.foreach.detailslocation.last}]
<div property=“gr:category” content="[{$oCatPath->oxcategories__oxtitle->value|strip_tags}]" [{if $oView->getActiveLangAbbr()}] xml:lang="[{$oView->getActiveLangAbbr()}]"[{/if}]></div>
[{/if}]
[{/foreach}]
[{if $oProduct->oxarticles__oxlength->value}]
<div rel=“gr:depth”>
<div typeof=“gr:QuantitativeValue”>
<div property=“gr:hasValue” content="[{$oProduct->oxarticles__oxlength->value}]" datatype=“xsd:float”></div>
<div property=“gr:hasUnitOfMeasurement” content=“MTR” datatype=“xsd:string”></div>
</div>
</div>
[{/if}]
[{if $oProduct->oxarticles__oxwidth->value}]
<div rel=“gr:width”>
<div typeof=“gr:QuantitativeValue”>
<div property=“gr:hasValue” content="[{$oProduct->oxarticles__oxwidth->value}]" datatype=“xsd:float”></div>
<div property=“gr:hasUnitOfMeasurement” content=“MTR” datatype=“xsd:string”></div>
</div>
</div>
[{/if}]
[{if $oProduct->oxarticles__oxheight->value}]
<div rel=“gr:height”>
<div typeof=“gr:QuantitativeValue”>
<div property=“gr:hasValue” content="[{$oProduct->oxarticles__oxheight->value}]" datatype=“xsd:float”></div>
<div property=“gr:hasUnitOfMeasurement” content=“MTR” datatype=“xsd:string”></div>
</div>
</div>
[{/if}]
[{if $oProduct->oxarticles__oweight->value}]
<div rel=“gr:weight”>
<div typeof=“gr:QuantitativeValue”>
<div property=“gr:hasValue” content="[{$oProduct->oxarticles__oweight->value}]" datatype=“xsd:float”></div>
<div property=“gr:hasUnitOfMeasurement” content=“KGM” datatype=“xsd:string”></div>
</div>
</div>
[{/if}]
</div>
</div>
[{if $oView->getBundleArticle()}]
[{assign var=“oBundleProduct” value=$oView->getBundleArticle()}]
<div rel=“gr:includes” resource="[{$oBundleProduct->getLink()}]#productdata"></div>
[{/if}]

[{block name=“Google Microdaten”}]
<div itemscope itemtype=“http://schema.org/Product”>
<meta itemprop=“name” content="
[{$oProduct->oxarticles__oxtitle->value|strip_tags|strip}] [{if $oView->getActiveLangAbbr()}] xml:lang=[{$oView->getActiveLangAbbr()}][{/if}]">
</div>
<div itemprop=“offers” itemscope itemtype=“http://schema.org/Offer”>
[{if $oView->getRDFaGenericCondition()}]
<meta itemprop=“itemCondition” itemtype=“http://schema.org/OfferItemCondition” content="[{$oView->getRDFaGenericCondition()}]">
[{/if}]
<meta itemprop=“priceCurrency” content="[{$currency->name}]" >
[{assign var=price value=$oProduct->getPrice()}]
<meta itemprop=“price” content="[{$price->getBruttoPrice()}]">
[{if $oDetailsProduct->getStockStatus() == -1}]
[{if $oDetailsProduct->oxarticles__oxnostocktext->value}]
<link itemprop=“availability” href=“http://schema.org/OutOfStock”>
[{elseif $oViewConf->getStockOffDefaultMessage()}]
<link itemprop=“availability” href=“http://schema.org/OutOfStock”>
[{/if}]

        [{elseif $oDetailsProduct-&gt;getStockStatus() == 1}]
                  
                        &lt;link itemprop="availability" href="http://schema.org/InStock&gt;
                   
        [{elseif $oDetailsProduct-&gt;getStockStatus() == 0}]           
            [{if $oDetailsProduct-&gt;oxarticles__oxstocktext-&gt;value}]
                            &lt;link itemprop="availability" href="http://schema.org/InStock"&gt;
            [{elseif $oViewConf-&gt;getStockOnDefaultMessage()}]
                            &lt;link itemprop="availability" href="http://schema.org/InStock"&gt;
            [{/if}]
                   
        [{/if}]
  &lt;/div&gt;
[{*/block*}]

</div>

Hi,

danke. Aber damit funzt bei mir der Shop nicht mehr.

atal error: Call to a member function getStockStatus() on a non-object in /www/htdocs/xxxxx/xxxxxx.de/www/tmp/smarty/8226cc6e6e08e212f43f4a0fe4840d77^%%19^19C^19CE3394%%object.tpl.php on line 116

Guckst Du hier, damit kriegst Du eine saubere Lösung und musst nicht global arbeiten.
Jeder Artikel jkann damit seinen eigenen Produktzustand haben, pflegbar über das Backend…
Mit der mitgelieferten Funktion getProductsCondition( kriegst Du, wenn Du die englische Sprache nutzt, einen Zustand ausgegeben der mit dem Text und XML Feed sowie dem Content API von Google kompatibel ist, so ist es ganz leicht das überall einzubringen.

Link : https://gitlab.petit-souris.de/oxid-esales/products_condition