Fehlende mikrodaten für Zustand

Wie kann man das lösen ?

Meine Lösung: Hier in Zeile C.a 160 /httpdocs/themes/Frontend/Bare/frontend/detail/index.tpl Aus dem hier: [code] {* Product data *} {block name=‘frontend_detail_index_buy_container_inner’}

[/code] Das hier: [code]{* Product data *} {block name=‘frontend_detail_index_buy_container_inner’}

New[/code] [img]http://www.fotos-hochladen.net/uploads/conditionl5faj3whib.png[/img]
2 Likes

Hallo, habe das gleiche Problem in Shopware 4.2.3. Wo ändere ich dort den Eintrag?

Wenn man es so einfügt:

New

ist doch das Wort “New” in Frondend beim Artikel zu sehen und sieht blöd aus.

Macht man es so, also Ohne “New”

besteht der Fehler im Merchant Center weiter.

In Produktfeed habe ich es so drin.

Kopfzeile: condition{#S#}
Template: new{#S#}

 

Kann man es auch so lösen das das Wort beim Artikel nicht erscheint und der Fehler trotzdem behoben wird?
Leider habe ich es nicht hinbekommen.

Google sagt das ist richtig so:

If you want to add microdata without making any user-visible changes you can embed the values in the attributes as shown in this example:

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

Wichtig ist, dass es im Offer Element ist.

1 Like

@derkosta schrieb:

Google sagt das ist richtig so:

If you want to add microdata without making any user-visible changes you can embed the values in the attributes as shown in this example:

http://schema.org/Product">;

http://schema.org/Offer">;

http://schema.org/InStock"; />
http://schema.org/NewCondition"; />

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

Wichtig ist, dass es im Offer Element ist.

So hab das mal so bearbeitet und es klappt. Von über 4.000 Mikrodaten zum Zustand sind im Mechant Center noch 206 übergeblieben die aber von Tag zu Tag weniger werden. 

Hast du den ganzen Block in die Frontend/Bare/frontend/detail/index.tpl gesetzt oder nur die eine Zeile ?

Wenn du die Zeile mit der Verlinkung nimmst,

http://schema.org/NewCondition"; />

sieht man den Link in den Artikeldetails…

@derkosta schrieb:

Google sagt das ist richtig so:

If you want to add microdata without making any user-visible changes you can embed the values in the attributes as shown in this example:

http://schema.org/Product">;

http://schema.org/Offer">;

http://schema.org/InStock"; />
http://schema.org/NewCondition"; />

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

Wichtig ist, dass es im Offer Element ist.

Hallo, so sieht mein Block aus.

{* Product data *}
                    {block name='frontend_detail_index_buy_container_inner'}
                        
                        
                            {block name='frontend_detail_index_data'}
                                {if $sArticle.sBlockPrices}
                                    {$lowestPrice=false}
                                    {$highestPrice=false}
                                    {foreach $sArticle.sBlockPrices as $blockPrice}
                                        {if $lowestPrice === false || $blockPrice.price < $lowestPrice}
                                            {$lowestPrice=$blockPrice.price}
                                        {/if}
                                        {if $highestPrice === false || $blockPrice.price > $highestPrice}
                                            {$highestPrice=$blockPrice.price}
                                        {/if}
                                    {/foreach}

Und im Produktfeed wie useg schrieb:

Kopfzeile: condition{#S#}
Template: new{#S#}

Danke, so habe ich es auch, nur in meine eigene detail/index.tpl, wg. Update-Sicherheit.

Ich habe jetzt nochmal rum probiert. In meinem Template bringt dieser Code die Condition direkt zu Beginn des Offers-Codes

{extends file="parent:frontend/detail/index.tpl"}

{block name="frontend_detail_index_data" prepend}

{/block}

Edit: In der Codeansicht, sehe ich gerade, ist ein Semikolon nach http://schema.org/OfferItemCondition" das darf da nicht rein! Sowie am Ende auch!

Shopware Forum  Gasp

1 Like

Guten Abend,

ich habe den Code gem. euerer Anleitung (Danke derkosta) in meinem pers. Template implementiert.

{extends file="parent:frontend/detail/index.tpl"}

{block name='frontend_index_header' prepend}
 {/block}

Mit Hilfe des Test-Tools für Strukturierte Daten von google habe ich geprüft, ob der Code auch angenommen wurde:

XX,XX € *



Also, wenn ich richtig sehe wurde die Implementierung angenommen, allerdings werden im Merchant Center trotzdem fast alle Artikel wie folgt klassifiziert: "Fehlende Mikrodaten für Zustand". (Die Simikolons sind im Originalquellcode nicht vorhanden -> Shopware-"Feature", dass es hier so angezeigt wird"

Was ich allerdings bei eurer Anleitung nicht verstanden habe ist Folgendes:


Und im Produktfeed wie useg schrieb:

Kopfzeile: condition{#S#}
Template: new{#S#}


Derzeit sieht z.B. mein Template im Reiter Marketing -> Produktexporte wie folgt aus:


{$sArticle.image|image:1}
new
{if $sArticle.esd}Vorbestellt{elseif $sArticle.instock>0}auf Lager{elseif $sArticle.releasedate && $sArticle.releasedate|strtotime > $smarty.now}Vorbestellt{elseif $sArticle.shippingtime}Vorbestellt{/if}

1. Frage: Muss ich quasi bei g:condition dass new durch new{#S#} ersetzen?
2. Frage: Wo genau im Reiter "Kopfzeile" unter Produktexporte muss ich condition{#S#} einsetzen?

Vielen Dank im Voraus :-)

Schnell für alle, die an einem ähnlichen Punkt hängen:

Bei der Condition ist neben den Angaben im Feed auch die Angabe auf der live ausgespielten Produktseite wichtig. 
Auch dort muss analog der selbe Artikelzustand angegeben sein. 

Aber: Im Seitenkopf fehlt bei Shopware regulär die Angabe zum Artikelzustand. 
Ich möchte für diese dieser Tage sehr grundlegende Funktion kein Plugin benutzen. Das gibt es zwar für wenig Geld im Store (einfach nach “micro data” oder “condition suchen”), aber selbst wenig Geld ist mir hier zu viel Geld. Es sollte out of the box einstellbar sein. 

Und noch für alle mit gemischten Ergebnissen (wie bei mir): Dass manche Artikel trotzdem akzeptiert werden, ist ein Verhalten, dass sich auch die Leute im AdWords-Support nicht erklären können :slight_smile:

Erik

PS: Wer die schnelle Lösung für jährlich nen Zehner will, kann sich ja hier bedienen:
http://store.shopware.com/webar94734672089/artikel-zustand-fix-missing-microdata-for-condition.html 

Hier noch ein Nachtrag für die Umsetzung im child theme. Wer nicht weiß was das ist oder damit keine Erfahungen gemacht hat (oder keine guten), lieber das Plugin nehmen. 

Den Block in der index.tpl der Artikel-Detailseite denjenigen Block aufspüren, der itemprop=„offers“ enthält. Kommt irgendwo ab Zeile 150. Diesen Block in der index.tpl für die Artikel-Detailseiten kopieren. Dann in die Child-Theme-index.tpl analog einfügen:

 

{extends file="parent:frontend/detail/index.tpl"}
{* Block ersetzen *}

                    {block name='frontend_detail_index_buy_container_inner'}

                        
				;
                            {block name='frontend_detail_index_data'}
                                {if $sArticle.sBlockPrices}
                                    {$lowestPrice=false}
                                    {$highestPrice=false}
                                    {foreach $sArticle.sBlockPrices as $blockPrice}
                                        {if $lowestPrice === false || $blockPrice.price < $lowestPrice}
                                            {$lowestPrice=$blockPrice.price}
                                        {/if}
                                        {if $highestPrice === false || $blockPrice.price > $highestPrice}
                                            {$highestPrice=$blockPrice.price}
                                        {/if}
                                    {/foreach}

                                    
                                    
                                    
                                {else}
                                    
                                {/if}
                                {include file="frontend/detail/data.tpl" sArticle=$sArticle sView=1}
                            {/block}

                            {block name='frontend_detail_index_after_data'}{/block}

                            {* Configurator drop down menu's *}
                            {block name="frontend_detail_index_configurator"}
                                
                                    {if $sArticle.sConfigurator}
                                        {if $sArticle.sConfiguratorSettings.type == 1}
                                            {include file="frontend/detail/config_step.tpl"}
                                        {elseif $sArticle.sConfiguratorSettings.type == 2}
                                            {include file="frontend/detail/config_variant.tpl"}
                                        {else}
                                            {include file="frontend/detail/config_upprice.tpl"}
                                        {/if}
                                    {/if}
                                
                            {/block}

                            {* Include buy button and quantity box *}
                            {block name="frontend_detail_index_buybox"}
                                {include file="frontend/detail/buy.tpl"}
                            {/block}

                            {* Product actions *}
                            {block name="frontend_detail_index_actions"}
                                
                                    {include file="frontend/detail/actions.tpl"}
                                
                            {/block}
                        
                    {/block}

Das Ergebnis im Frontend (auf der Detailseite) ist das von mir erwünschte. 

Wenn es allerdings auch Artikel mit abweichenden Zuständen als nur „neu“ gibt, ist eine Umsetzung über die Artikelfreitextfelder eher zu empfehlen. Auch hier kann die Variante mit der veränderten index.tpl im Child-Theme zum Einsatz kommen. Angenommen, für den Artikelzustand ist Attribut 4 vorgesehen, dann sollte dort die Kennzeichnung des Zustands nach Schema.org eingetragen sein. Also:

wenn $sArticle.attr4 belegt ist, nimm den Inhalt als Kennzeichnung des Artikelzustands

andernfalls nimm den Artikelzusatand als neu an

Siehe codeblock. 

 

{extends file="parent:frontend/detail/index.tpl"}
{* Block ersetzen *}

                    {block name='frontend_detail_index_buy_container_inner'}

                        
				{if $sArticle.attr4}
                 ;
                {else}
                 ;

                {/if}
                            {block name='frontend_detail_index_data'}
                                {if $sArticle.sBlockPrices}
                                    {$lowestPrice=false}
                                    {$highestPrice=false}
                                    {foreach $sArticle.sBlockPrices as $blockPrice}
                                        {if $lowestPrice === false || $blockPrice.price < $lowestPrice}
                                            {$lowestPrice=$blockPrice.price}
                                        {/if}
                                        {if $highestPrice === false || $blockPrice.price > $highestPrice}
                                            {$highestPrice=$blockPrice.price}
                                        {/if}
                                    {/foreach}

                                    
                                    
                                    
                                {else}
                                    
                                {/if}
                                {include file="frontend/detail/data.tpl" sArticle=$sArticle sView=1}
                            {/block}

                            {block name='frontend_detail_index_after_data'}{/block}

                            {* Configurator drop down menu's *}
                            {block name="frontend_detail_index_configurator"}
                                
                                    {if $sArticle.sConfigurator}
                                        {if $sArticle.sConfiguratorSettings.type == 1}
                                            {include file="frontend/detail/config_step.tpl"}
                                        {elseif $sArticle.sConfiguratorSettings.type == 2}
                                            {include file="frontend/detail/config_variant.tpl"}
                                        {else}
                                            {include file="frontend/detail/config_upprice.tpl"}
                                        {/if}
                                    {/if}
                                
                            {/block}

                            {* Include buy button and quantity box *}
                            {block name="frontend_detail_index_buybox"}
                                {include file="frontend/detail/buy.tpl"}
                            {/block}

                            {* Product actions *}
                            {block name="frontend_detail_index_actions"}
                                
                                    {include file="frontend/detail/actions.tpl"}
                                
                            {/block}
                        
                    {/block}

Könnte vielleicht mal noch jemand mit mehr Programmierahnung drüber schauen? :wink:

Erik

Den „frontend_detail_index_buy_container_inner“ im eigenen Theme zu überschreiben, nimmt die Updatefähigkeit des Block komplett raus.

Sinnvoller ist es die Blöcke zu erweitern. Die nächste Zeile im index.tpl nach dem

ist ein eigener Block.

Warum also nicht direkt an diesen hängen?

{block name='frontend_detail_index_data' prepend}
	
{/block}

Durch das „prepend“ wird mein Code am anfang des Blockes gesetzt und die meta Anweisung ist direkt direkt hinter dem

rein, ohne den Standardblock zu „überschreiben“. Updatesicherheit zu 100% hergestellt.

Natürlich funktioniert das auch mit dem 2ten (attr4) Block sauber.

gruß

Martin