Google Shopping für Shopware einrichten (Shopware 5)

Shopware 5

Unser Plugin "Google Shopping PRO für Shopware 5" unterstützt Dich bei der Pflege der Produktdaten für Deine Produkte im Google Shopping.

Google Shopping für Shopware 5 im Shopware Community Store

Funktionalitäten

  • Du kannst pro Artikel/Variante alle notwendigen Werte für Google Shopping angeben.
  • Der Produktname und die Produktbeschreibung kann angegeben werden.
  • Google Shopping Kategorien können einfach per Dropdown-Menü festgelegt werden.
  • Es können bis zu 5 Custom Labels verwendet werden.

Installationsanleitung

  1. Installiere und aktiviere das Plugin "Google Shopping für Shopware".
  2. Anschließend muss ein neuer Produktexport eingerichtet werden. Eine genaue Anleitung findest Du im nächsten Abschnitt.
  3. Im Anschluss muss der Produktfeed bei Google Shopping im Merchant Center hinterlegt werden.

Google Shopping für Shopware 5 einrichten

Um Google Shopping mit den passenden Produktdaten aus Deinem Shopware Shop zu befüllen, installierst Du bitte zunächst das Plugin "Google Shopping für Shopware" aus dem Shopware Community Store.

Anschließend muss ein neuer Produktexport (Im Backend unter "Marketing -> Produktexporte") eingerichtet werden. Nutze hierzu die folgenden Daten.

Formatierung

Zeichenkodierung: UTF-8
Dateiformat: XML

Kopfzeile

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
	<atom:link href="http://{$sConfig.sBASEPATH}/engine/connectors/export/{$sSettings.id}/{$sSettings.hash}/{$sSettings.filename}" rel="self" type="application/rss+xml" />
	<title>{$sConfig.sSHOPNAME|escape}</title>
	<description>Beschreibung im Header hinterlegen</description>
	<link>http://{$sConfig.sBASEPATH}</link>
	<language>DE</language>
	<image>
		<url>http://{$sConfig.sBASEPATH}/templates/_default/frontend/_resources/images/logo.jpg</url>
		<title>{$sConfig.sSHOPNAME|escape}</title>
		<link>http://{$sConfig.sBASEPATH}</link>
	</image>

Fusszeile

</channel>
</rss>

Template (DE)

{* if $sArticle.lenz_google_shopping_active == 1 *}
{assign var="string" value=$sArticle.articleID|articleImages:$sArticle.ordernumber:1:"##"|escape}
{assign var="productVariantImage" value="##"|explode:$string}
 
<item> 
    <g:id>{$sArticle.ordernumber|escape}</g:id>
    <title>{if $sArticle.lenz_google_shopping_title}{$sArticle.lenz_google_shopping_title|escape}{else}{$sArticle.name|strip_tags|strip|truncate:80:"...":true|escape}{if $sArticle.additionaltext} {$sArticle.additionaltext|strip_tags|strip|escape}{/if}{/if}</title>
    <g:description>{if $sArticle.lenz_google_shopping_description}{$sArticle.lenz_google_shopping_description|escape}{else}{$sArticle.description_long|strip_tags|strip|truncate:900:"..."|escape}{/if}</g:description>
    <link>{$sArticle.articleID|link:$sArticle.name|escape}{if $sSettings['partnerID']}&amp;amp;{else}?{/if}number={$sArticle.ordernumber}</link>
    <g:image_link>{if $productVariantImage[0]}{$productVariantImage[0]}{else}{$sArticle.image|image:1|escape}{/if}</g:image_link>
    {foreach $productVariantImage as $key => $value}
        {if $key != 0 && $key < 11}
            <g:additional_image_link>{$value}</g:additional_image_link>
        {/if}
    {/foreach}
    <g:availability>{if $sArticle.esd}in stock{elseif $sArticle.instock>0}in stock{elseif $sArticle.releasedate && $sArticle.releasedate|strtotime > $smarty.now}preorder{elseif $sArticle.lenz_google_shopping_availability_date && $smarty.now < ($sArticle.lenz_google_shopping_availability_date|strtotime)}backorder{elseif $sArticle.shippingtime}in stock{else}out of stock{/if}</g:availability>
    {if $sArticle.pseudoprice > $sArticle.price}
        <g:price>{$sArticle.pseudoprice|format:"number"} EUR</g:price>
        <g:sale_price>{$sArticle.price|format:"number"} EUR</g:sale_price>
    {else}
        <g:price>{$sArticle.price|format:"number"} EUR</g:price>
    {/if}
    {if $sArticle.purchaseunit && $sArticle.referenceunit}
        {$purchaseUnit = $sArticle.purchaseunit}
		{$referenceUnit = $sArticle.referenceunit}
		{$unit = $sArticle.unit}
		{if $unit == "g" && $referenceUnit == 1000}
			{$purchaseUnit = $purchaseUnit / 1000}
			{$referenceUnit = $referenceUnit / 1000}
			{$unit = "kg"}
		{/if}
		{if $unit == "ml" && $referenceUnit == 1000}
			{$purchaseUnit = $purchaseUnit / 1000}
			{$referenceUnit = $referenceUnit / 1000}
			{$unit = "l"}
		{/if}
        <g:unit_pricing_measure>{$purchaseUnit|escape} {$unit|replace:"Stck.":"ct"|replace:"Stück":"ct"|replace:"m²":"sqm"|replace:"Milliliter":"ml"|replace:"Liter":"l"|replace:"Kilogramm":"kg"|replace:"Gramm":"g"|replace:"Zentimeter":"cm"|replace:"Meter":"m"|escape}</g:unit_pricing_measure>
		<g:unit_pricing_base_measure>{$referenceUnit|escape} {$unit|replace:"Stck.":"ct"|replace:"Stück":"ct"|replace:"m²":"sqm"|replace:"Milliliter":"ml"|replace:"Liter":"l"|replace:"Kilogramm":"kg"|replace:"Gramm":"g"|replace:"Zentimeter":"cm"|replace:"Meter":"m"|escape}</g:unit_pricing_base_measure>
    {/if}
    <g:google_product_category>{$sArticle.lenz_google_shopping_category|escape}</g:google_product_category>
    <g:product_type>{$sArticle.articleID|category:" > "|escape}</g:product_type>
    <g:brand>{$sArticle.supplier|escape}</g:brand>
    <g:gtin>{$sArticle.ean|replace:"|":""}</g:gtin>
    <g:identifier_exists>{if $sArticle.ean || ($sArticle.supplier && $sArticle.suppliernumber)}yes{else}no{/if}</g:identifier_exists>
    <g:mpn>{$sArticle.suppliernumber|escape}</g:mpn>
    <g:condition>{if $sArticle.lenz_google_shopping_condition}{$sArticle.lenz_google_shopping_condition|escape}{else}new{/if}</g:condition>
    <g:adult>{if $sArticle.lenz_google_shopping_adult}yes{else}no{/if}</g:adult>
    {if $sArticle.lenz_google_shopping_multipack}<g:multipack>{$sArticle.lenz_google_shopping_multipack|escape}</g:multipack>{/if}
    {if $sArticle.lenz_google_shopping_is_bundle}<g:is_bundle>yes</g:is_bundle>{/if}
    {if $sArticle.lenz_google_shopping_energy_efficiency_class}<g:energy_efficiency_class>{$sArticle.lenz_google_shopping_energy_efficiency_class|escape}</g:energy_efficiency_class>{/if}
    {if $sArticle.lenz_google_shopping_age_group}<g:age_group>{$sArticle.lenz_google_shopping_age_group|escape}</g:age_group>{/if}
    {if $sArticle.lenz_google_shopping_color}<g:color>{$sArticle.lenz_google_shopping_color|escape}</g:color>{/if}
    {if $sArticle.lenz_google_shopping_gender}<g:gender>{$sArticle.lenz_google_shopping_gender|escape}</g:gender>{/if}
    {if $sArticle.lenz_google_shopping_material}<g:material>{$sArticle.lenz_google_shopping_material|escape}</g:material>{/if}
    {if $sArticle.lenz_google_shopping_pattern}<g:pattern>{$sArticle.lenz_google_shopping_pattern|escape}</g:pattern>{/if}
    {if $sArticle.lenz_google_shopping_size}<g:size>{$sArticle.lenz_google_shopping_size|escape}</g:size>{/if}
    {if $sArticle.lenz_google_shopping_size_type}<g:size_type>{$sArticle.lenz_google_shopping_size_type|escape}</g:size_type>{/if}
    {if $sArticle.lenz_google_shopping_size_system}<g:size_system>{$sArticle.lenz_google_shopping_size_system|escape}</g:size_system>{/if}
    {if $sArticle.lenz_google_shopping_item_group_id}<g:item_group_id>{$sArticle.lenz_google_shopping_item_group_id}</g:item_group_id>{/if}
    <g:custom_label_0>{$sArticle.lenz_google_shopping_custom_label0|escape}</g:custom_label_0>
    <g:custom_label_1>{$sArticle.lenz_google_shopping_custom_label1|escape}</g:custom_label_1>
    <g:custom_label_2>{$sArticle.lenz_google_shopping_custom_label2|escape}</g:custom_label_2>
    <g:custom_label_3>{$sArticle.lenz_google_shopping_custom_label3|escape}</g:custom_label_3>
    <g:custom_label_4>{$sArticle.lenz_google_shopping_custom_label4|escape}</g:custom_label_4>
    {if $sArticle.lenz_google_shopping_promotion_id}<g:promotion_id>{$sArticle.lenz_google_shopping_promotion_id|escape}</g:promotion_id>{/if}
    {if $sArticle.lenz_google_shopping_availability_date}}<g:availability_date>{$sArticle.lenz_google_shopping_availability_date|escape}</g:availability_date>{/if}
    <g:shipping>
        <g:country>DE</g:country>
        <g:service>Standard</g:service>
        <g:price>{$sArticle|@shippingcost:"prepayment":"de"|escape:number} EUR</g:price>
    </g:shipping>	
    {if $sArticle.weight}
    <g:shipping_weight>{$sArticle.weight|escape:number} kg</g:shipping_weight>
	{/if}
</item>
{* /if *}

Template (US)

{* if $sArticle.lenz_google_shopping_active == 1 *}
{assign var="string" value=$sArticle.articleID|articleImages:$sArticle.ordernumber:1:"##"|escape}
{assign var="productVariantImage" value="##"|explode:$string}
 
<item> 
    <g:id>{$sArticle.ordernumber|escape}</g:id>
    <title>{if $sArticle.lenz_google_shopping_title}{$sArticle.lenz_google_shopping_title|escape}{else}{$sArticle.name|strip_tags|strip|truncate:80:"...":true|escape}{if $sArticle.additionaltext} {$sArticle.additionaltext|strip_tags|strip|escape}{/if}{/if}</title>
    <g:description>{if $sArticle.lenz_google_shopping_description}{$sArticle.lenz_google_shopping_description|escape}{else}{$sArticle.description_long|strip_tags|strip|truncate:900:"..."|escape}{/if}</g:description>
    <link>{$sArticle.articleID|link:$sArticle.name|escape}{if $sSettings['partnerID']}&amp;amp;{else}?{/if}number={$sArticle.ordernumber}</link>
    <g:image_link>{if $productVariantImage[0]}{$productVariantImage[0]}{else}{$sArticle.image|image:1|escape}{/if}</g:image_link>
    {foreach $productVariantImage as $key => $value}
        {if $key != 0 && $key < 11}
            <g:additional_image_link>{$value}</g:additional_image_link>
        {/if}
    {/foreach}
    <g:availability>{if $sArticle.esd}in stock{elseif $sArticle.instock>0}in stock{elseif $sArticle.releasedate && $sArticle.releasedate|strtotime > $smarty.now}preorder{elseif $sArticle.shippingtime}in stock{else}out of stock{/if}</g:availability>
    {if $sArticle.pseudoprice > $sArticle.price}
        <g:price>{$sArticle.pseudoprice|format:"number"} EUR</g:price>
        <g:sale_price>{$sArticle.price|format:"number"} EUR</g:sale_price>
    {else}
        <g:price>{$sArticle.price|format:"number"} EUR</g:price>
    {/if}
    {if $sArticle.purchaseunit && $sArticle.referenceunit}
        {$purchaseUnit = $sArticle.purchaseunit}
		{$referenceUnit = $sArticle.referenceunit}
		{$unit = $sArticle.unit}
		{if $unit == "g" && $referenceUnit == 1000}
			{$purchaseUnit = $purchaseUnit / 1000}
			{$referenceUnit = $referenceUnit / 1000}
			{$unit = "kg"}
		{/if}
		{if $unit == "ml" && $referenceUnit == 1000}
			{$purchaseUnit = $purchaseUnit / 1000}
			{$referenceUnit = $referenceUnit / 1000}
			{$unit = "l"}
		{/if}
        <g:unit_pricing_measure>{$purchaseUnit|escape} {$unit|replace:"Stck.":"ct"|replace:"Stück":"ct"|replace:"m²":"sqm"|replace:"Milliliter":"ml"|replace:"Liter":"l"|replace:"Kilogramm":"kg"|replace:"Gramm":"g"|replace:"Zentimeter":"cm"|replace:"Meter":"m"|escape}</g:unit_pricing_measure>
		<g:unit_pricing_base_measure>{$referenceUnit|escape} {$unit|replace:"Stck.":"ct"|replace:"Stück":"ct"|replace:"m²":"sqm"|replace:"Milliliter":"ml"|replace:"Liter":"l"|replace:"Kilogramm":"kg"|replace:"Gramm":"g"|replace:"Zentimeter":"cm"|replace:"Meter":"m"|escape}</g:unit_pricing_base_measure>
    {/if}
    <g:google_product_category>{$sArticle.lenz_google_shopping_category|escape}</g:google_product_category>
    <g:product_type>{$sArticle.articleID|category:" > "|escape}</g:product_type>
    <g:brand>{$sArticle.supplier|escape}</g:brand>
    <g:gtin>{$sArticle.ean|replace:"|":""}</g:gtin>
    <g:identifier_exists>{if $sArticle.ean || ($sArticle.supplier && $sArticle.suppliernumber)}yes{else}no{/if}</g:identifier_exists>
    <g:mpn>{$sArticle.suppliernumber|escape}</g:mpn>
    <g:condition>{if $sArticle.lenz_google_shopping_condition}{$sArticle.lenz_google_shopping_condition|escape}{else}new{/if}</g:condition>
    <g:adult>{if $sArticle.lenz_google_shopping_adult}yes{else}no{/if}</g:adult>
    {if $sArticle.lenz_google_shopping_multipack}<g:multipack>{$sArticle.lenz_google_shopping_multipack|escape}</g:multipack>{/if}
    {if $sArticle.lenz_google_shopping_is_bundle}<g:is_bundle>yes</g:is_bundle>{/if}
    {if $sArticle.lenz_google_shopping_energy_efficiency_class}<g:energy_efficiency_class>{$sArticle.lenz_google_shopping_energy_efficiency_class|escape}</g:energy_efficiency_class>{/if}
    {if $sArticle.lenz_google_shopping_age_group}<g:age_group>{$sArticle.lenz_google_shopping_age_group|escape}</g:age_group>{/if}
    {if $sArticle.lenz_google_shopping_color}<g:color>{$sArticle.lenz_google_shopping_color|escape}</g:color>{/if}
    {if $sArticle.lenz_google_shopping_gender}<g:gender>{$sArticle.lenz_google_shopping_gender|escape}</g:gender>{/if}
    {if $sArticle.lenz_google_shopping_material}<g:material>{$sArticle.lenz_google_shopping_material|escape}</g:material>{/if}
    {if $sArticle.lenz_google_shopping_pattern}<g:pattern>{$sArticle.lenz_google_shopping_pattern|escape}</g:pattern>{/if}
    {if $sArticle.lenz_google_shopping_size}<g:size>{$sArticle.lenz_google_shopping_size|escape}</g:size>{/if}
    {if $sArticle.lenz_google_shopping_size_type}<g:size_type>{$sArticle.lenz_google_shopping_size_type|escape}</g:size_type>{/if}
    {if $sArticle.lenz_google_shopping_size_system}<g:size_system>{$sArticle.lenz_google_shopping_size_system|escape}</g:size_system>{/if}
    {if $sArticle.lenz_google_shopping_item_group_id}<g:item_group_id>{$sArticle.lenz_google_shopping_item_group_id}</g:item_group_id>{/if}
    <g:custom_label_0>{$sArticle.lenz_google_shopping_custom_label0|escape}</g:custom_label_0>
    <g:custom_label_1>{$sArticle.lenz_google_shopping_custom_label1|escape}</g:custom_label_1>
    <g:custom_label_2>{$sArticle.lenz_google_shopping_custom_label2|escape}</g:custom_label_2>
    <g:custom_label_3>{$sArticle.lenz_google_shopping_custom_label3|escape}</g:custom_label_3>
    <g:custom_label_4>{$sArticle.lenz_google_shopping_custom_label4|escape}</g:custom_label_4>
    {if $sArticle.lenz_google_shopping_promotion_id}<g:promotion_id>{$sArticle.lenz_google_shopping_promotion_id|escape}</g:promotion_id>{/if}
    {if $sArticle.lenz_google_shopping_availability_date}<g:availability_date>{$sArticle.lenz_google_shopping_availability_date|escape}</g:availability_date>{/if}
    <g:shipping>
        <g:country>DE</g:country>
        <g:service>Standard</g:service>
        <g:price>{$sArticle|@shippingcost:"prepayment":"de"|escape:number} EUR</g:price>
    </g:shipping>	
    <g:tax>
      <g:country>US</g:country>
      <g:rate>0.00</g:rate>
      <g:tax_ship>no</g:tax_ship>
    </g:tax>
	{if $sArticle.weight}
	<g:shipping_weight>{$sArticle.weight|escape:number} kg</g:shipping_weight>
	{/if}
</item>
{* /if *}

Weitere Filter

Aktiviere nur aktive Artikel und Artikel mit Bildern für Google Shopping.

Voraussetzungen

Als Voraussetzung für das Plugin benötigst Du ein Google Merchant Konto.

Individuelle Anpassungen (nur sofern vom Kunden gewünscht)

Hauptartikel ohne Artikelnummer im Link

<link>{$sArticle.articleID|link:$sArticle.name|escape}{if $sArticle.configurator != null}{if $sSettings['partnerID']}&amp;{else}?{/if}number={$sArticle.ordernumber}{/if}</link>

Lieferdatum aus lenz_delivery_date (Lieferzeiten Experte) soll ausgegeben werden

<g:availability>{if $sArticle.instock > 0}Sofort lieferbar{elseif $sArticle.lenz_delivery_date}Lieferbar ab {$sArticle.lenz_delivery_date|date_format:"d.m.Y"}{elseif $sArticle.shippingtime}{$sArticle.shippingtime} Werktage{else}3-5 Werktage{/if}</g:availability>

Changelog

Version 1.2.2
VERBESSERUNG | Beschreibung ist nun ein mehrzeiliges Textfeld.

Version 1.2.1
VERBESSERUNG | Unterstützung für Shopware 5.7.

Version 1.2.0
Kompatibilität mit Shopware 5.6.

Version 1.1.1
Es kann nun eine Google Shopping Promotion ID hinterlegt werden.

Version 1.0.3
Behebt ein kritisches Problem mit den Attributen, die genutzt werden, um die Daten für Google Shopping bereitzustellen. Bitte aktualisieren Sie auf diese Version, um Fehler zu vermeiden.

Version 1.0.2
Es sind nun nahezu alle relevanten Felder für Google Shopping anpassbar und zum Google Merchant Center exportierbar.

Version 1.0.1
Google Shopping Felder sind nun übersetzbar.

Version 1.0.0
Erste Version.

Wie kann ich größere Bilder an Google senden?

Wenn Du unser Google Shopping Plugin für Shopware 5 nach unserer Anleitung eingerichtet hast, kannst Du die Bildgröße wie folgt ändern.
Öffne im Backend das Menü Marketing -> Produktexporte und wähle den passenden Produktexport. Hier muss bei Template nun eine Zeile ausgetauscht werden:

Vorher: {assign var="string" value=$sArticle.articleID|articleImages:$sArticle.ordernumber:1:"##"|escape}

Nachher: {assign var="string" value=$sArticle.articleID|articleImages:$sArticle.ordernumber:2:"##"|escape}

Somit werden nun als Produktbilder die Thumbnails in "Größe 2" zu Google geschickt. Die verschiedenen Standard-Thumbnail-Größen in Shopware 5 sind:

  • 0: 200x200
  • 1: 600x600
  • 2: 1280x1280

Weitere Größen können über die Medienverwaltung hinzugefügt werden.

Wie kann ich nur Artikel mit der aktiven Option "GS aktiv" zu Google übertragen?

Damit nur Artikel mit der aktiven Option "GS aktiv" zu Google übertragen werden und nicht alle Artikel, muss das Template in der ersten und letzten Zeile angepasst werden.

erste Zeile
bisher im Template: {* if $sArticle.lenz_google_shopping_active == 1 *}
geändert im Template: { if $sArticle.lenz_google_shopping_active == 1 }
ACHTUNG: Die geschweiften Klammern dürfen nach der Änderung kein Leerzeichen enthalten!

letzte Zeile
bisher im Template: {* /if *}
geändert im Template: { /if }
ACHTUNG: Die geschweiften Klammern dürfen nach der Änderung kein Leerzeichen enthalten!