Modify

Opened 8 years ago

Closed 3 years ago

Last modified 3 years ago

#1362 closed Bug/Fehler (fixed)

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

Reported by: FräuleinGarn Owned by: Markus Rehm
Priority: normal Milestone: modified-shop-2.0.8.0
Component: Template Version: 2.0.3.0
Keywords: Cc:
Blocked By: Blocking:

Description (last modified by Torsten Riemer)

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 Torsten Riemer 8 years ago.
Bildschirmfoto 2017-12-05 um 20.46.46.png (1.0 MB ) - added by FräuleinGarn 8 years ago.
Bildschirmfoto 2017-12-06 um 11.32.02.png (84.7 KB ) - added by FräuleinGarn 8 years ago.
Bildschirmfoto 2018-04-13 um 12.44.02.png (116.5 KB ) - added by FräuleinGarn 8 years ago.
mit Aggregateoffer
Bildschirmfoto 2018-03-07 um 11.41.36.png (520.7 KB ) - added by FräuleinGarn 8 years ago.
UnitPriceSpecification
screen-rich-snippets-tpl-responsive-2.png (94.4 KB ) - added by Markus Rehm 7 years ago.

Change History (30)

comment:1 by Torsten Riemer, 8 years ago

Description: modified (diff)

comment:2 by Torsten Riemer, 8 years ago

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

by Torsten Riemer, 8 years ago

comment:3 by Torsten Riemer, 8 years ago

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

comment:4 by FräuleinGarn, 8 years ago

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 dort nachliest, 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.

Last edited 3 years ago by Torsten Riemer (previous) (diff)

by FräuleinGarn, 8 years ago

comment:5 by FräuleinGarn, 8 years ago

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

by FräuleinGarn, 8 years ago

comment:6 by FräuleinGarn, 8 years ago

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 by FräuleinGarn, 8 years ago

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 by Torsten Riemer, 8 years ago

Priority: normalhoch

comment:9 by FräuleinGarn, 8 years ago

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":…………

by FräuleinGarn, 8 years ago

mit Aggregateoffer

comment:10 by Torsten Riemer, 8 years ago

Milestone: modified-shop-2.0.4.0

comment:11 by Gerhard Waldemair, 7 years ago

Owner: set to Markus Rehm
Status: newassigned

comment:12 by Torsten Riemer, 7 years ago

Milestone: modified-shop-2.0.5.0

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

by Markus Rehm, 7 years ago

comment:13 by FräuleinGarn, 7 years ago

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 by Markus Rehm, 7 years ago

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 by Markus Rehm, 7 years ago

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 by Markus Rehm, 7 years ago

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 by FräuleinGarn, 7 years ago

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 by Markus Rehm, 7 years ago

Priority: hochnormal

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 by Torsten Riemer, 7 years ago

Milestone: modified-shop-2.0.5.0

comment:20 by Gerhard Waldemair, 6 years ago

Milestone: modified-shop-2.1.0.0

comment:21 by Torsten Riemer, 3 years ago

Milestone: modified-shop-2.1.0.0modified-shop-2.0.8.0

Querverlinktes Ticket: #2435

comment:22 by Markus, 3 years ago

Resolution: fixed
Status: assignedclosed

In 15023:

fix #1362, #2435 - partly revoked r12573 (fix #1765 - removed duplicate itemprop="price" on graduated prices) - add missing itemprop="price" on graduated prices when no product price is set

comment:23 by Torsten Riemer, 3 years ago

In 15024:

revoked r15023 (fix #1362, #2435 - partly revoked r12573 (fix #1765 - removed duplicate itemprop="price" on graduated prices) - add missing itemprop="price" on graduated prices when no product price is set) - due to wrong fix

comment:24 by Markus, 3 years ago

In 15026:

fix #1362, #2435 - revoked r12573 (fix #1765 - removed duplicate itemprop="price" on graduated prices) - add missing itemprop="price" on graduated prices when no product price is set

Modify Ticket

Action
as closed The owner will remain Markus Rehm.
The resolution will be deleted. Next status will be 'reopened'.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.