Opened 4 years ago

Last modified 2 years ago

#1362 assigned Bug/Fehler

Staffelpreise in der pd_summarybox sind nicht mit meta itemprop="price" versehen

Reported by: FräuleinGarn Owned by: markus
Priority: normal Milestone: modified-shop-2.1.0.0
Component: Template Version: 2.0.3.0

Description (last modified by Tomcraft)

Vermutung:

Das könnte zu sinkenden strukturierten Daten führen, wenn man die priceSpecification Änderung von Version 2.0.3.0 in graduted_price.html übernimmt und Staffelpreise verwendet.

Vorher hat google sich den Preis oben aus der pd_summarybox gezogen, wo meta itemprop="price" vergeben wurde.

Das tut google jetzt auch noch, kann dann aber nicht die min und max Preise finden.

Ausführlicher steht es hier: Strukturierte Daten sinken extrem (breadcrumb und products)

Attachments (6)

Bildschirmfoto 2017-10-27 um 11.42.31.png (331.7 KB) - added by Tomcraft 4 years ago.
Bildschirmfoto 2017-12-05 um 20.46.46.png (1.0 MB) - added by FräuleinGarn 4 years ago.
Bildschirmfoto 2017-12-06 um 11.32.02.png (84.7 KB) - added by FräuleinGarn 4 years ago.
Bildschirmfoto 2018-04-13 um 12.44.02.png (116.5 KB) - added by FräuleinGarn 4 years ago.
mit Aggregateoffer
Bildschirmfoto 2018-03-07 um 11.41.36.png (520.7 KB) - added by FräuleinGarn 4 years ago.
UnitPriceSpecification?
screen-rich-snippets-tpl-responsive-2.png (94.4 KB) - added by markus 3 years ago.

Change History (26)

comment:1 Changed 4 years ago by Tomcraft

  • Description modified (diff)

comment:2 Changed 4 years ago by Tomcraft

Das Problem er schließt sich mir nicht, siehe angehängter Screenshot. Meiner Meinung nach ist alles vorhanden, was Google benötigt.

Changed 4 years ago by Tomcraft

comment:3 Changed 4 years ago by Tomcraft

Hier ist es auch nochmal etwas genauer beschrieben: TEMPLATE: Bootstrap3 für Shop 2.0 - freies responsive Template

comment:4 Changed 4 years ago by FräuleinGarn

Im Bootstrap Template ging es mir aber darum, dass die priceSpecification zur Überkategorie product und nicht bei offers als Unterkategorie gewertet wurde. Das wurde behoben und ist nun gleich, wie im modified Template. Das hatte ich nur zusätzlich herausgefunden, da ich nur von einem Nutzer mit Bootstraptemplate Antwort auf meine Frage erhalten habe.

Wie Alfred im Thread "​Strukturierte Daten sinken extrem (breadcrumb und products" geschrieben hat:

Das Testtool prüft nur ob alles da ist an Werten und die Syntax stimmt.
Trotzdem kann alles falsch sein wenn man die Richtlinien seitens Google nicht beachtet.

Wenn man dortnachliest, gibt es zb diesen Punkt als Bsp:

Don't mark up content that is not visible to readers of the page. For example, if the JSON-LD markup describes a performer, the HTML body should describe that same performer.

Auf dieses Beispiel umgemünzt:

Don't mark up content that is not visible to readers of the page. For example, if the microdata markup describes a priceSpecification, the HTML body should describe that same priceSpecification.

Nun wird durch die graduated_price.html zwar im html code die priceSpecification ausgegeben und somit auch im Testtool angezeigt. Aber man kann sie nicht auf der Seite finden. Der price und maxprice könnte gefunden werden, da dieser oben in der summarybox als graduated_price mit meta itemprop="price" deklariert ist. Aber wie soll Google den min_price finden, wenn gp_price kein meta itemprop="price" hat?

Die Werte der gp_price Felder sind immer ein Text wie "je xy EUR". Müssten aber so

<div class="graduated_prices cf"><div class="gp_headline">Staffelpreise</div><div class="gp_box vpe"><span class="gp_title">ab 1 Set</span><span id="_offers10" itemprop="offers" itemscope itemtype="http://schema.org/Offer" class="gp_price">je 
<span itemprop="price">2,30</span>EUR pro Set</span></div>

definiert werden.

Um mein Anliegen mal zu verdeutlichen, hänge ich ein Bild an.

Changed 4 years ago by FräuleinGarn

comment:5 Changed 4 years ago by FräuleinGarn

Hab mal testweise in der graduated_price.html nach den Preisen die Zeile

 <meta itemprop="price" content="{$module_data.PLAIN_PRICE}" />

eingefügt. Das führt zwar zu dem Ergebnis, dass jetzt unter jedem gp_price das zugehörige meta itemprop="price" zu finden ist, aber dafür hat man dann im Testtool den Standardpreis+die einzelnen Staffelpreise. Das Tool gibt zwar keinen Fehler aus, aber das kann ja nicht richtig sein, wenn da mehrere Preise stehen. Siehe Bild

Changed 4 years ago by FräuleinGarn

comment:6 Changed 4 years ago by FräuleinGarn

Nachedem ich die price_specification wieder raus genommen habe, steigen die strukturierten Daten wieder ordentlich (130% in einem Monat etwa). Mehr dazu im oben verlinkten Thread.

comment:7 Changed 4 years ago by FräuleinGarn

Mittlerweile sind die strukturierten Daten von 220 auf 748 gestiegen. Trend weiter positiv. Sollte also in den nächsten Wochen wieder bei etwa 1000 sein.

Das Problem betrifft einige Leute. Gehe sogar davon aus, dass es alle betrifft, nur nicht jeder das mitbekommt, weil er (noch) wenige oder keine Staffelpreise nutzt.

Die Pricespecification muss entweder angepasst, oder wieder entfernt werden. Neunutzer von modified wissen nicht darum und würden sich wundern, warum keine strukturierten Daten aufgebaut werden.

Priorität bitte auf hoch setzen!

comment:8 Changed 4 years ago by Tomcraft

  • Priority changed from normal to hoch

comment:9 Changed 4 years ago by FräuleinGarn

Ich hab das heute im Google Webmaster Forum gepostet und auch eine Antwort von einem Googlemitarbeiter erhalten.

Google sagt, dass für Staffelpreise Aggregate Offer verwendet werden kann, auch wenn es eigentlich für Preisportale gedacht ist.

Thema kann hier eingesehen werden: https://productforums.google.com/forum/#!topic/webmaster-de/bsLyLKfQxwY;context-place=forum/webmaster-de

der "AggregateOffer"-Typ wäre für deinen Fall durchaus geeignet - der häufigste Anwendungsfall hier sind tatsächlich die angesprochenen Preisportale.

Jedoch kannst du dies auch problemlos nutzen, um verschieden gestaffelte Preise im gleichen Shop anzugeben.

Ich habe aber noch nachgehakt, ob UnitPriceSpecification? mit eligiblequantity nicht noch sinnvoller wäre. Denke das wäre noch passender. Vielleicht kommt da noch eine Antwort. Weil Thema schon auf gelöst gesetzt wurde. Deshalb bitte weiter verfolgen.

Weiterhin hab ich noch ein Beispiel für die Lösung mit aggregate offer gefunden, die zeigt, dass es auch wirklich in den Googleergebnissen angezeigt wird und nicht nur im rich snippet tester funktioniert.

https://gut-bedacht.com/shop/kunststoffplatten/stegplatten/stegplatte-10-mm/
Die machen es so: {"@type":"AggregateOffer?","lowPrice":"16.70","highPrice":"159.00","priceCurrency":"EUR","availability":"https:\/\/schema.org\/InStock?","url":…………

Changed 4 years ago by FräuleinGarn

mit Aggregateoffer

comment:10 Changed 3 years ago by Tomcraft

  • Milestone modified-shop-2.0.4.0 deleted

comment:11 Changed 3 years ago by GTB

  • Owner set to markus
  • Status changed from new to assigned

comment:12 Changed 3 years ago by Tomcraft

  • Milestone set to modified-shop-2.0.5.0

Dann setze ich den Meilenstein für dieses Ticket mal noch auf 2.0.5.0

Changed 3 years ago by markus

comment:13 Changed 2 years ago by FräuleinGarn

Der Screenshot zeigt die bisher implementierte Lösung mit pricespecification und diese ist nicht richtig und führt zu einem Rückgang der strukturierten Daten bis auf 0, auch wenn das structured data test tool keinen Fehler anzeigt. Das hatte ich ausgiebig im Forumsthread beschrieben und es haben sich noch weitere gemeldet und gleiches bestätigt. Erst nach dem entfernen ging es wieder hoch.

Zitat aus dem Google Forum zu meiner Frage:

Hallo,

du musst verstehen das das Tool nicht zeigt wenn die Richtlinien nicht eingehalten werden.
Was lt. deinen Strukturierten Daten z.B. der Preis ist muss auf der Webseite auch der Preis sein.
Da reicht es nicht aus das der von irgendwoher kommt sonder es muss die Code-Stelle sein die dann sichtbar auf der Seite den Preis anzeigt.
In der Vergangenheit war das nicht der Fall bei deinen Experimenten mit den Staffelpreisen.
Vielleicht wäre es leichter Json einzusetzen
https://developers.google.com/search/docs/guides/intro-structured-data

Gruß en001

comment:14 Changed 2 years ago by markus

Hi Tim,

wenn ich das richtig verstehe müsste bei Staffelpreisen dann folgendes passieren:

Das bisherige raus

  <div itemprop="PriceSpecification" itemscope itemtype="http://schema.org/PriceSpecification">
    <meta itemprop="priceCurrency" content="{$smarty.session.currency}">
    <meta itemprop="price" content="{$maxPrice}">
    <meta itemprop="minPrice" content="{$minPrice}">
    <meta itemprop="maxPrice" content="{$maxPrice}">
  </div>

... und das hier dafür rein (das ist jetzt noch nicht ins reine geschrieben)

<div itemprop="offers" itemscope itemtype="http://schema.org/AggregateOffer">
<span itemprop="priceCurrency">{$smarty.session.currency}"</span>
<span itemprop="lowPrice">xxxx</span>
<span itemprop="highPrice">xxxx</span>
</div>

Das kommt ja dann innerhalb von "Offer".

Eine weitere Frage wäre dann noch ob das hier dann auch raus muss wenn es Staffelpreise gibt

<meta itemprop="price" content="{$price_data.PRODUCTS_PRICE_PLAIN}" />

Markus

comment:15 Changed 2 years ago by markus

Hi Tim,

was ebenfalls noch sein könnte ...
https://schema.org/PriceSpecification

Evtl. fehlt uns bei der bisherigen PriceSpecification? nur das hier
"eligibleQuantity"
Die Menge für die einzelnen Staffelpreise.

Markus

comment:16 Changed 2 years ago by markus

Hi Tim,

hast du Lust das ganze zu testen? Ich denke ich weiss jetzt wo das Problem liegt.

Um das ganze zu testen müsstest du folgendes machen:

in der product_info_v1.html (oder eine der beiden anderen)
Suche:

<div class="pd_summarybox" itemprop="offers" itemscope itemtype="http://schema.org/Offer">

Ersetze mit:

<div class="pd_summarybox" itemprop="offers" itemscope itemtype="{if isset($MODULE_graduated_price) && $MODULE_graduated_price != ''}http://schema.org/AggregateOffer{else}http://schema.org/Offer{/if}">

Dann in der graduated_price.html

Den ganzen Block suchen

  <div itemprop="PriceSpecification" itemscope itemtype="http://schema.org/PriceSpecification">
    <meta itemprop="priceCurrency" content="{$smarty.session.currency}">
    <meta itemprop="price" content="{$maxPrice}">
    <meta itemprop="minPrice" content="{$minPrice}">
    <meta itemprop="maxPrice" content="{$maxPrice}">
  </div>

und mit dem hier ersetzen

  <meta itemprop="lowPrice" content="{$minPrice}">
  <meta itemprop="highPrice" content="{$maxPrice}">
  <meta itemprop="offerCount" content="{$smarty.foreach.aussen.iteration}">

bevor ich das aber in den Templates umbaue müsste ich wissen ob das die Lösung ist bzw. ob wir noch weiter daran feilen müssen. Man kann dann auch noch innerhalb von AggregateOffer? die einzelnen Öffers hinterlegen. Ist nur die Frage ob das benötigt wird oder nicht. :-)

Markus

comment:17 Changed 2 years ago by FräuleinGarn

aggregateoffer werden wir nicht nutzen können! Das ist zwar im Moment die einzige Trickserei, damit die Staffelpreise angezeigt werden, aber es ist nicht dafür gedacht. Darauf würde sich im zeitlichen Verlauf Google einstellen und es wäre wieder zu ändern. Außerdem würde es sofort Probleme in google shopping geben und ist somit eh nicht für eine allgemeine Lösung geeignet.

Es wird zeitnah keine Möglichkeit geben Staffelpreise per strukturierte Daten an Google zu senden! Deshalb sollten wir das lassen und auf den Ursprungszustand vor der pricespecification zurückbauen. Glaube das war vor 2.0.3.0.

Das sinken meiner strukturierten Daten lag an meinem Template, weil ich nur die ab-Preise anzeige und nicht den höheren Stückpreis für die erste gekaufte Menge und google somit nicht den min und max Preis sehen kann. Außerdem muss der höhere Preis (Stückpreis erste gekaufte Menge) an Google übergeben werden und auch sichtbar sein.

Zusätzlich sollte der Stückpreis besser für den Kunden sichtbar sein, als der ab Preis (also fetter und/oder größer). Im Moment ist es andersherum.

Weiteres dazu im Emailverkehr zum Thema zwischen Markus, Alfred und Timm.

comment:18 Changed 2 years ago by markus

  • Priority changed from hoch to normal

Die aktuelle Auszeichnung nach schema.org wäre soweit korrekt mit "priceSpecification". Google scheint das aber nicht zu behagen. Da es aber keine genauen Anleitungen gibt wie die Staffelpreise für Google ausgezeichnet werden sollen wird aktuell nichts in der graduated_price.html geändert. Sobald es hier genaue Vorgaben gibt wie das ganze auszusehen hat wird dies entsprechend angepasst.

Markus

comment:19 Changed 2 years ago by Tomcraft

  • Milestone modified-shop-2.0.5.0 deleted

comment:20 Changed 2 years ago by GTB

  • Milestone set to modified-shop-2.1.0.0

Add Comment

Modify Ticket

Action
as assigned
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.