Google Shopping Feed - Grundpreisangabe

Hallo,

für die Erstellung eines Feeds für Google Shopping, werden folgende Werte für die Grundpreisangabe aus dem Template ausgegeben:

<g:referenceunit>{{ product.referenceUnit }}</g:referenceunit>
<g:purchaseUnit>{{ product.purchaseUnit }}</g:purchaseUnit>

Dies wird zwar an das Merchant Center übergeben und es werden Zahlenwerte erfasst, jedoch mit dem Hinweis als Benutzer definiertes Attribut:
image

Google möchte diesen Wert mit folgender Vorgabe bereitgestellt bekommen:
unit_pricing_measure und unit_pricing_base_measure

Hat jemand eine Lösung für dieses Problem oder sogar eine Vorlage mit “allen Attributen“ für den Feed, damit dieser optimal für Google vorbereitet ist?

Hallo,

bei mir sieht es so aus:

Kopfzeile:
{strip}
product_type{#S#}
gender{#S#}
age_group{#S#}
größe{#S#}
farbe{#S#}
google_produktkategorie{#S#}
promotion_id{#S#}
id{#S#}
titel{#S#}
beschreibung{#S#}
link{#S#}
bild_url{#S#}
ean{#S#}
marke{#S#}
mpn{#S#}
zustand{#S#}
produktart{#S#}
preis{#S#}
unit_pricing_base_measure{#S#}
unit_pricing_measure{#S#}
versand{#S#}
währung{#S#}
item_group_id{#S#}
verfügbarkeit
{/strip}{#L#}

Template:
{strip}
{$sArticle.articleID|category}{#S#}
unisex {#S#}
adult {#S#}
{$sArticle.attr7|escape}{#S#}
schwarz {#S#}
{$sArticle.attr4|escape}{#S#}
{$sArticle.attr5|escape}{#S#}
{$sArticle.ordernumber|escape}{#S#}
{$sArticle.name|strip_tags|strip|trim|truncate:60:"…":true|escape} {$sArticle.additionaltext|escape} {if $sArticle.referenceunit && $sArticle.purchaseunit}{assign var=„sArticleReferenceprice“ value=$sArticle.price/$sArticle.purchaseunit*$sArticle.referenceunit}({$sArticleReferenceprice|escape:„number“}/{$sArticle.referenceunit}{$sArticle.unit}€){/if}{#S#}
{$sArticle.description_long|strip_tags|strip|trim|truncate:500:"…":true|escape}{#S#}
{$sArticle.articleID|link:$sArticle.name|escape}{#S#}
{$sArticle.image|image:4}{#S#}
{$sArticle.ean|escape}{#S#}
{$sArticle.supplier|escape}{#S#}
{$sArticle.suppliernumber|escape}{#S#}
Neu {#S#}
{$sArticle.articleID|category:" > "|escape}{#S#}
{$sArticle.price|escape:„number“}{#S#}
{if $sArticle.referenceunit && $sArticle.purchaseunit}
{assign var=„sArticleReferenceprice“ value=$sArticle.price/$sArticle.purchaseunit*$sArticle.referenceunit}
{$sArticle.referenceunit} {$sArticle.unit}{#S#}
{$sArticle.purchaseunit} {$sArticle.unit}{#S#}
{else}
{#S#}{#S#}
{/if}
DE::DPD:{$sArticle|@shippingcost:„prepayment“:„de“}{#S#}
EUR {#S#}
{$sArticle.additionaltext|escape}{#S#}
{if $sArticle.esd}Auf Lager
{elseif $sArticle.instock>0}Auf Lager
{elseif $sArticle.releasedate && $sArticle.releasedate|strtotime > $smarty.now}Vorbestellt
{elseif $sArticle.shippingtime}Auf Lager
{else}Nicht auf Lager{/if}
{/strip}{#L#}

Dabei werden die Grundpreise weitergegeben :slight_smile:

Grüße
Matthias

Hallo Matthias,
bei mir sieht der Code komplett anders aus:

Moin :slight_smile:

Probiere es einmal mit folgendem Code zur Grundpreisberechnung. Mit der Ergänzung dieses Abschnitts wurden die Daten zur Errechnung des Grundpreises erfolgreich abgestellt, wenn eine Mengeneinheit zugeordnet war. Ohne Mengeneinheit bleiben die Felder leer.

<g:unit_pricing_measure> 
      {% if product.unit.shortCode is defined and product.unit.shortCode is not null %}
         {{ product.purchaseUnit }} {{ product.unit.shortCode }}
      {% endif %}
    </g:unit_pricing_measure>
    <g:unit_pricing_base_measure> 
       {% if product.unit.shortCode is defined and product.unit.shortCode is not null %}
         {{ product.referenceUnit}} {{ product.unit.shortCode }}
       {% endif %}
    </g:unit_pricing_base_measure>

Schöne Grüße
Dana

Um § 5 Abs. 1 PAngV in der neuen Fassung nun zu entspechen, habe ich nun zum 28.05.2022 alle Grundpreise auf x€/kg, x€/l geändert. Da wir Kosmetika im Sortiment haben, waren die Grundpreisangaben vorher in x € / 100 ml oder x € / 100g angegeben.
Nun ist alles in kg, aber bei kleinen Mengen , z.B. bei 3 Gramm =0,003 kg wird von der Produkt Export Funktion auf 0,00kg gerundet, was dann natürlich bei der Berechnung des Grundpreises zu einem Fehler führt.

Gibt es hierfür eine Lösung?

Viele Grüße,
Wolf

Hallo @wolf2,

wenn du den Code von @DanaHermann verwendest, findet keine Rundung statt. Zumindest nicht im Export, möglicherweise rundet hier das gewünschte Zielsystem des Exports?

 {% if product.unit.shortCode is defined and product.unit.shortCode is not null %}
   {{ product.purchaseUnit }} {{ product.unit.shortCode }}
 {% endif %}

Viele Grüße aus Schöppingen
Florian Holtgrefe

Hat sich das Shorttag verschoben… bekomme einen error

Leider bekomme ich auch einen Fehler:


<h2><span class="frontend_error_exception">Ups! Ein Fehler ist aufgetreten!</span></h2>

    <p>
        <span class="frontend_error_exception">Die nachfolgenden Hinweise sollten Ihnen weiterhelfen.</span>
    </p>

    <h3> in engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php on line 657</h3>

    <h3>Stack trace:</h3>
    <div style="overflow:auto;">
        <pre>#0 engine/Library/Smarty/sysplugins/smarty_internal_templateparser.php(3144): Smarty_Internal_TemplateCompilerBase->trigger_template_error() #1 engine/Library/Smarty/sysplugins/smarty_internal_templateparser.php(3209): Smarty_Internal_Templateparser->yy_syntax_error(10, '\xE2') #2 engine/Library/Smarty/sysplugins/smarty_internal_smartytemplatecompiler.php(105): Smarty_Internal_Templateparser->doParse(10, '\xE2') #3 engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php(192): Smarty_Internal_SmartyTemplateCompiler->doCompile('{foreach $sArti...') #4 engine/Library/Smarty/sysplugins/smarty_internal_template.php(187): Smarty_Internal_TemplateCompilerBase->compileTemplate(Object(Enlight_Template_Default)) #5 engine/Library/Smarty/sysplugins/smarty_internal_templatebase.php(155): Smarty_Internal_Template->compileTemplateSource() #6 engine/Shopware/Core/sExport.php(1205): Smarty_Internal_TemplateBase->fetch('string:{foreach...', 20) #7 engine/Shopware/Controllers/Backend/Export.php(132): sExport->executeExport(Resource id #920) #8 engine/Shopware/Controllers/Backend/Export.php(89): Shopware_Controllers_Backend_Export->generateExport('/www/htdocs/w01...') #9 engine/Library/Enlight/Controller/Action.php(192): Shopware_Controllers_Backend_Export->indexAction() #10 engine/Library/Enlight/Controller/Dispatcher/Default.php(478): Enlight_Controller_Action->dispatch('indexAction') #11 engine/Library/Enlight/Controller/Front.php(228): Enlight_Controller_Dispatcher_Default->dispatch(Object(Enlight_Controller_Request_RequestHttp), Object(Enlight_Controller_Response_ResponseHttp)) #12 engine/Shopware/Kernel.php(188): Enlight_Controller_Front->dispatch() #13 vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php(102): Shopware\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #14 vendor/symfony/http-kernel/HttpCache/HttpCache.php(453): Symfony\Component\HttpKernel\HttpCache\SubRequestHandler::handle(Object(Shopware\Kernel), Object(Symfony\Component\HttpFoundation\Request), 1, true) #15 engine/Shopware/Components/HttpCache/AppCache.php(261): Symfony\Component\HttpKernel\HttpCache\HttpCache->forward(Object(Symfony\Component\HttpFoundation\Request), true, NULL) #16 vendor/symfony/http-kernel/HttpCache/HttpCache.php(238): Shopware\Components\HttpCache\AppCache->forward(Object(Symfony\Component\HttpFoundation\Request), true) #17 engine/Shopware/Components/HttpCache/AppCache.php(102): Symfony\Component\HttpKernel\HttpCache\HttpCache->pass(Object(Symfony\Component\HttpFoundation\Request), true) #18 shopware.php(122): Shopware\Components\HttpCache\AppCache->handle(Object(Symfony\Component\HttpFoundation\Request)) #19 {main}</pre>
    </div>
<div class="doublespace">&nbsp;</div>

Du bist im Shopware 6 Forum, Smarty ist Shopware 5.

Ohh, sorry :disappointed: bin über die Google Suche auf diese Seite gekommen.

Ich versuche mein Glück direkt im Forum.

Hallo zusammen,

hänge auch gerade an der Portierung des Feeds von SW5 zu SW6.

@DanaHermann Merci, g:unit_pricing_measure und g:unit_pricing_base_measure funktionieren.

Doch mir fehlt noch die Preisangabe.
Unter SW5 haben wir seit langer Zeit im Einsatz:

  <g:referenceprice>{if $sArticle.referenceunit && $sArticle.purchaseunit}{assign var="sArticleReferenceprice" value=$sArticle.price/$sArticle.purchaseunit*$sArticle.referenceunit}{$sArticleReferenceprice|escape:"number"}{/if}</g:referenceprice>

Ich kriege das bislang nicht in SW6 zum Laufen. :see_no_evil:

  <g:referenceprice>
    {% if product.referenceUnit && product.purchaseUnit %}
	  {% set sArticleReferenceprice = product.price/product.purchaseUnit*product.referenceUnit %}
	  {{ sArticleReferenceprice|escape:"number"}
	{% endif %}
  </g:referenceprice>

Grüße
namtscho

Hallo,
wir haben das so gelöst:

{% if product.unit.name is defined && product.unit.name is not null %}
    {% if product.unit.name in ['Kilogramm','Kubikmeter','Laufende(r) Meter','Liter','Quadratmeter'] %}
		<g:unit_pricing_measure>{{ product.purchaseUnit }} {{product.unit.name|replace({"Kilogramm":"kg","Kubikmeter":"cbm","Laufende(r) Meter":"m","Liter":"l","Quadratmeter":"sqm","Stück":"St."}) }}</g:unit_pricing_measure>
		<g:unit_pricing_base_measure>{{ product.referenceUnit }} {{ product.unit.name|replace({"Kilogramm":"kg","Kubikmeter":"cbm","Laufende(r) Meter":"m","Liter":"l","Quadratmeter":"sqm","Stück":"St."}) }}</g:unit_pricing_base_measure>

Danke für die Info. Aber unser Problem ist die Berechnung und Ausgabe des Grundpreises. Der wird m.W. nicht von Shopware bereitgestellt.

Für den Google Shopping Feed wird kein berechneter Grundpreis übergeben, sondern die Basis und die Bezugseinheit. Google berechnet den Grundpreis dann mit Hilfe des ebenfalls übergebenen Produktpreises selbst:

{% if product.unit.shortCode is defined and product.unit.shortCode is not null %}
        <g:unit_pricing_measure>{{ product.purchaseUnit }} {{ product.unit.shortCode }}</g:unit_pricing_measure>
{% endif %}
{% if product.unit.shortCode is defined and product.unit.shortCode is not null %}
        <g:unit_pricing_base_measure>{{ product.referenceUnit }} {{ product.unit.shortCode }}</g:unit_pricing_base_measure>
{% endif %}
1 „Gefällt mir“

Super, danke für die Info.