rechtstexte für onlineshop
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Staffelpreise mit schema.org deklarieren

    xtc-user09

    • Schreiberling
    • Beiträge: 265
    Staffelpreise mit schema.org deklarieren
    am: 22. Juni 2017, 17:29:36
    Hallo,

    bei der Auszeichnung für Rich Snippets nach schema.org kann in der PriceSpecification nicht nur der Einzelpreis, sondern auch die Staffelpreise ausgewiesen werden.

    Hierfür steht PriceRange und der minPrice und maxPrice zur Verfügung - minPrice ist der günstigste Staffelpreis, maxPrice der Teuerste. So zeigt Google dann an, dass das Produkt von xxx bis xxx kostet - oft sieht man das bei Hotels, die verschiedene Zimmerkategorien mit unterschiedlichen Preisen haben.

    In der graduated_price.html lässt sich aber nur eine Deklarierung des Preises für "{$module_data.PRICE}" machen, nicht jedoch für die einzelnen Preisstaffeln.

    Ist es dennoch irgendwo möglich, den günstigsten und teuersten Staffelpreis zu deklarieren?

    Danke für Hilfe!

    Linkback: https://www.modified-shop.org/forum/index.php?topic=37404.0

    manne35

    • Fördermitglied
    • Beiträge: 615
    • Geschlecht:
    Re: Staffelpreise mit schema.org deklarieren
    Antwort #1 am: 28. Juni 2017, 04:05:56
    Gute Idee.
    Hast Du schon einen Lösungsansatz dafür ?

    xtc-user09

    • Schreiberling
    • Beiträge: 265
    Re: Staffelpreise mit schema.org deklarieren
    Antwort #2 am: 28. Juni 2017, 08:06:14
    Hallo,
    in der Theorie habe ich das Problem schon gelöst, ich weiß aber nicht, wie man es praktisch umsetzen kann...

    Das Problem besteht darin, dass das Shopsystem die verschiedenen Stafffelpreise nicht differenziert, sondern die Anweisung zur Ausgabe jedes Preises identisch ist:

    Code: PHP  [Auswählen]
    <table cellpadding="2" cellspacing="0" border="0" class="graduatedprice">

    {foreach name=aussen item=module_data from=$module_content}

      <tr>

        <td class="graduated-price-style"><i>{$module_data.QUANTITY} {#unit#}</i></td>

        <td class="graduated-price-style">{#pieces#} nur<span itemprop="price" content="{$module_data.PRICE}">{$module_data.PRICE}</span><meta itemprop="priceCurrency" content="EUR" /></td>

        <td class="graduated-price-style" style="display:none">{#pieces#} nur<span itemscope itemtype="//schema.org/PriceSpecification"><span itemprop="price" content="{$module_data.PRICE}">{$module_data.PRICE}</span><meta itemprop="priceCurrency" content="EUR" /></span></td>

      </tr>

    {/foreach}

    </table>

     

    Dadurch kann nicht für den günstigsten oder teuersten Preis etwas Spezielles definiert werden. Vermutlich ist das im Template nicht möglich, sondern muss im Backend programmiert werden - hierzu sind meine PHP-Kenntnisse leider zu schlecht.

    Viele Grüße!

    Modulfux

    • Experte
    • Beiträge: 3.590
    • Geschlecht:
    Re: Staffelpreise mit schema.org deklarieren
    Antwort #3 am: 28. Juni 2017, 14:35:07
    Doch es ist möglich die Auszeichnung im Template hinzubekommen, dank der Smarty-Foreach-Schleife.

    Die Eigenschaft priceRange geht leider nicht, weil dazu auch weitere Templatedateien angefasst werden müssen, da priceRange keine Eigenschaft vom Typ Offer ist. Es gibt aber aus dem Bereich PriceSpecification die Eigenschaften minPrice und maxPrice.

    Hier ist aber eine Lösung, wie man die Daten angezeigt bekommt und den Test für strukturierte Daten auch besteht.

    Datei: dein_template/module/graduated_price.html

    Suche:
    Code: PHP  [Auswählen]
    {/foreach}

    Füge davor ein:
    Code: PHP  [Auswählen]
    {if $smarty.foreach.aussen.first}
      {assign var=maxPrice value=$module_data.PLAIN_PRICE}
    {else if $smarty.foreach.aussen.last}
      {assign var=minPrice value=$module_data.PLAIN_PRICE}
    {/if}

    Suche:
    Code: PHP  [Auswählen]
    {/foreach}

    Füge danach ein:
    Code: PHP  [Auswählen]
    <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>

    [EDIT Tomcraft 02.07.2017: Code korrigiert, damit er auch für Smarty 2 funktioniert.]

    xtc-user09

    • Schreiberling
    • Beiträge: 265
    Re: Staffelpreise mit schema.org deklarieren
    Antwort #4 am: 28. Juni 2017, 22:30:24
    Hallo,
    vielen Dank für deine Hilfe!

    Wenn ich das allerdings einbaue, wird mir im Frontend über den Staffelpreisen "} "} "} angezeigt. Schaue ich in den Quelltext, sehe ich als Werte bei min und maxPrice nur "{Array.PLAIN_PRICE"

    Weißt du wo der Fehler liegt? Bzw. wie kommst du auf die Variable PLAIN_PRICE?

    Viele Grüße!

    Modulfux

    • Experte
    • Beiträge: 3.590
    • Geschlecht:
    Re: Staffelpreise mit schema.org deklarieren
    Antwort #5 am: 28. Juni 2017, 22:50:02
    Welche Shopversion hast du?

    Häng mal bitte deine graduated_price.html als Anhang hier rein.

    Timm

    • Fördermitglied
    • Beiträge: 6.258
    Re: Staffelpreise mit schema.org deklarieren
    Antwort #6 am: 28. Juni 2017, 22:53:19
    Danke Ronny für die Ausführungen. Habs so eingebaut in 2.0.2.2 und hat auf Anhieb funktioniert. Perfekt

    So sieht es dann im google rich snippet tester komplett aus
    [ Für Gäste sind keine Dateianhänge sichtbar ]
    und das ist der Teil der dazugekommen ist. Vorher war bei price schluss
    [ Für Gäste sind keine Dateianhänge sichtbar ]

    @xtc-user09
    Ich kann deinen Fehler nicht nachvollziehen, wenn man es so einbaut, wie modulfux geschrieben hat.

    Der erste Teil kommt vor die Vorletzte Zeile
    Code: PHP  [Auswählen]
    {/foreach}
    und der zweite Teil danach.

    Müsste dann so aussehen am Ende der Datei: dein_template/module/graduated_price.html
    Code: PHP  [Auswählen]
    {** BOF - Modulfux min max price fuer google rich snippets *}
            {if $smarty.foreach.aussen.first}
              {assign var=maxPrice value="{$module_data.PLAIN_PRICE}"}
            {else if $smarty.foreach.aussen.last}
              {assign var=minPrice value="{$module_data.PLAIN_PRICE}"}
            {/if}
            {** EOF - Modulfux min max price fuer google rich snippets *}
      {/foreach}
      {** BOF - Modulfux min max price fuer google rich snippets *}
      <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>
      {** EOF - Modulfux min max price fuer google rich snippets *}
    </div>

    xtc-user09

    • Schreiberling
    • Beiträge: 265
    Re: Staffelpreise mit schema.org deklarieren
    Antwort #7 am: 29. Juni 2017, 08:31:09
    Welche Shopversion hast du?

    Häng mal bitte deine graduated_price.html als Anhang hier rein.

    Hallo,

    meine graduated_price.html sieht so aus:

    Code: PHP  [Auswählen]
    {config_load file="$language/lang_$language.conf" section="graduated_price"}
    <table cellpadding="2" cellspacing="0" border="0" class="graduatedprice">
    {foreach name=aussen item=module_data from=$module_content}
      <tr>
        <td class="graduated-price-style"><i>{$module_data.QUANTITY} {#unit#}</i></td>
       <td class="graduated-price-style">{#pieces#} {$module_data.PRICE}</td>
     </tr>
    {if $smarty.foreach.aussen.first}
      {assign var=maxPrice value="{$module_data.PLAIN_PRICE}"}
    {else if $smarty.foreach.aussen.last}
      {assign var=minPrice value="{$module_data.PLAIN_PRICE}"}
    {/if}
    {/foreach}
    <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>
    </table>

    Bei dem Shop handelt es sich allerdings noch um eine Version 1.03 mit allerdings allen Bugfixes bis heute - hatte mehrere Gründe, wieso nicht mehr geupdated wurde.

    Die graduated_price sieht allerdings nahezu identisch zur aktuellen Version 2 aus. Außer, dass in Version 1.03 noch keine "PLAIN"-Variablen verwendet werden. Mit module_data.PRICE hat es aber leider auch nicht funktioniert.

    xtc-user09

    • Schreiberling
    • Beiträge: 265
    Re: Staffelpreise mit schema.org deklarieren
    Antwort #8 am: 29. Juni 2017, 22:04:51
    Hallo,
    mir kommt es so vor, als würde das Smarty nicht richtig interpretiert werden. Kann es sein, dass ich eine zu alte Smarty-Version o.ä. habe?

    Modulfux

    • Experte
    • Beiträge: 3.590
    • Geschlecht:
    Re: Staffelpreise mit schema.org deklarieren
    Antwort #9 am: 29. Juni 2017, 22:10:38
    Welche Smarty-Version hast du denn? Ansonsten kannst du mir gern per PN deine FTP-Daten schicken, dann guck ich mir das mal schnell an.

    xtc-user09

    • Schreiberling
    • Beiträge: 265
    Re: Staffelpreise mit schema.org deklarieren
    Antwort #10 am: 29. Juni 2017, 22:19:07
    Hallo,

    habe Smarty 2.6.26 laut Ordner.
    Die neueste Shopversion scheint Smarty 3 zu haben?!

    Kann ich die Smarty-Version ohne weiteres updaten oder gibt es eine Möglichkeit, dein Skript auf die Smarty VErsion 2.6.26 anzupassen - alle anderen Module/Skripte etc. laufen unter der 2.6.26 nämlich jahrelang einwandfrei.

    Viele Grüße!

    xtc-user09

    • Schreiberling
    • Beiträge: 265
    Re: Staffelpreise mit schema.org deklarieren
    Antwort #11 am: 30. Juni 2017, 08:03:44
    Habe den Einbau gerade bei einer Version 1.6 getestet, dort kommt der gleiche Fehler wie bei mir. Bei der 1.6 ist Smart 2.6.27 installiert.

    Vermutlich wurde zur Version 2.0 etwas geändert oder die neue Smarty-Version hat Einfluss darauf.

    Modulfux

    • Experte
    • Beiträge: 3.590
    • Geschlecht:
    Re: Staffelpreise mit schema.org deklarieren
    Antwort #12 am: 30. Juni 2017, 10:45:50
    @xtc-user09
    Mit Smarty 2.6.27 will es tatsächlich nicht so funktionieren. Aber da du keinen modified 2.x einsetzt und die Updatesicherheit sowieso nicht gewährleistet ist, muss eben ein Coreingriff herhalten.

    Datei includes/modules/graduated_prices.php

    Suche:
    Code: PHP  [Auswählen]
    // set cache ID

    Füge danach ein:
    Code: PHP  [Auswählen]
    //BOF - Modulfux min max price fuer google rich snippets
    $maxPrice = reset($staffel_data);
    $minPrice = end($staffel_data);
    $search   = array(' EUR', ',');
    $replace  = array('', '.');
    $module_smarty->assign('minPrice', trim(str_replace($search, $replace, $minPrice['PRICE'])));
    $module_smarty->assign('maxPrice', trim(str_replace($search, $replace, $maxPrice['PRICE'])));
    //EOF - Modulfux min max price fuer google rich snippets

    Datei dein_template/modules/graduated_price.html

    Suche:
    Code: PHP  [Auswählen]
    {/foreach}

    Füge danach ein:
    Code: PHP  [Auswählen]
    <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>

    HINWEIS:
    Diese Anleitung gilt nur für modified Versionen < 2.x

    xtc-user09

    • Schreiberling
    • Beiträge: 265
    Re: Staffelpreise mit schema.org deklarieren
    Antwort #13 am: 30. Juni 2017, 15:25:45
    Super! Das funktioniert bei den älteren Shopversionen für die Productinfo einwandfrei.

    Kann man das auch noch für die Productlisting umsetzen?

    Für die Productlisting wird scheinbar nicht auf die graduated_price.html zugegriffen, da sich der folgende Bereich direkt in der html-Datei befindet:

    Code: PHP  [Auswählen]
    {if $module_data.GRADUATED}
    <table cellpadding="0" cellspacing="0" border="0" class="graduatedprice">
    {foreach name=aussen item=staffel_data from=$module_data.GRADUATED}
    <tr>
    <td><i>{$staffel_data.QUANTITY} {#unit#}</i></td>
    <td>{#pieces#} {$staffel_data.PRICE}</td>
    </tr>
    {/foreach}
    <div itemprop="PriceSpecification" itemscope itemtype="http://schema.org/PriceSpecification">
    <meta itemprop="priceCurrency" content="EUR">
    <meta itemprop="valueAddedTaxIncluded" content="false" />
    <meta itemprop="price" content="{$maxPrice}">
    <meta itemprop="minPrice" content="{$minPrice}">
    <meta itemprop="maxPrice" content="{$maxPrice}">
    </div>
    </table>
    {/if}
     

    so bleibt im Quelltext der Wert für die Variablen $maxPrice und $minPrice leider leer.

    Viele Grüße

    Timm

    • Fördermitglied
    • Beiträge: 6.258
    Re: Staffelpreise mit schema.org deklarieren
    Antwort #14 am: 01. Juli 2017, 19:18:22
    Mit productlisting meinst du doch eine Seite, wo mehrere Artikel aufgelistet werden. Da wird dir im google Rich snippet Tester gar kein Price angezeigt. Also auch nicht min und maxprice. Wie soll das auch gehen? Google wüsste ja gar nicht welchen Preis von welchem Produkt es auswählen soll.

    Bsp du hast 30artikel pro Seite. 1artikel kostet 1€ und 1Artikel kostet 100€ und 28 Artikel kosten irgendwas dazwischen. Soll er dann einen minprice von 1€ und maxprice von 100€ ausgeben für die Seite?
    So ein Rich snippet muss doch eindeutig zu einem bestimmten produkt zugeordnet werden.

    Oder hab ich da grad nen Denkfehler?
    10 Antworten
    5457 Aufrufe
    31. August 2014, 09:40:58 von cayuco
    2 Antworten
    3116 Aufrufe
    21. April 2016, 08:50:59 von swolfram [templatix]
    8 Antworten
    5085 Aufrufe
    13. Dezember 2011, 17:49:05 von web28