Shopware Product Export via CLI

Mithilfe des product-export:generate Befehls, können einzelne oder mehrere Produktexporte z.B. für Google Shopping in Shopware generiert werden.



Befehlssyntax

Folgende Syntax steht in Shopware zur Verfügung:

bin/console product-export:generate <storefront-sales-channel-id> (<export-id>) (--force) (--include-inactive)


Parameter Erforderlich Beschreibung
storefront-sales-channel-id Ja Die Storefront Sales Channel ID des jeweiligen Verkaufskanals
export-id Nein Die exakte ID des Exports
—force Nein Erzwingt die Neugenerierung
—include-inactive Nein Führt die Generierung auch für inaktive Produktexporte durch



Ausführungsarten

Das Generieren der Exporte kann entweder über die Shopware Message Queue oder synchron über den CLI-Befehl generiert werden.


Ausführung über die Message Queue (Asynchron)

Um die Ausführung über die Shopware Message Queue abzubilden, muss die Option generate via scheduler aktiviert sein. Andernfalls wird der Export synchron über den CLI Befehl generiert.


Ausführung über den CLI Befehl (Synchron)

Um die Ausführung synchron über den CLI Befehl abzubilden, muss die Option generate via scheduler deaktiviert sein. Andernfalls wird der Export asynchron über die Message Queue generiert.




Ermittlung der korrekten Parameter

Leider stellt Shopware die storefront-sales-channel-id sowie die id des Exports nicht in der Shopware Administration zur Verfügung. Aus diesem Grund müssen die Parameter über die Datenbank ermittelt werden.


Auf die Shopware Datenbank kann unter anderem über folgende Wege zugegriffen werden:

  • PhpMyAdmin
  • Adminer
  • Direkte MySQL-Verbindung


Rufen Sie hierzu die Tabelle product_export auf und ermitteln Sie die gewünschten Parameter anhand der Datenbankspalten:

  • id
  • storefront_sales_channel_id


Nutzen Sie die ermittelten Parameter, um den CLI-Befehl zusammenzusetzen. Die korrekte Syntax finden Sie am Anfang des Artikels.



Beispielscript

Mit folgendem Beispielscript können Sie alle Exporte für einen bestimmten Verkaufskanal generieren. Erzeugen Sie hierzu eine neue Datei in dem Document-Root-Verzeichnis Ihres Shops.\n\nBeispiel:

touch /var/www/creoline-demo.com/product-exports.sh
#!/bin/bash

echo "[$(date '+%d/%m/%Y %H:%M:%S')] Generating Exports for Sales-Channel #1"
/usr/bin/php -d memory_limit=-1 /var/www/creoline-demo.com/bin/console product-export:generate 082...5c00 --force
echo "[$(date '+%d/%m/%Y %H:%M:%S')] [DONE] Sales-Channel #1"

echo "[$(date '+%d/%m/%Y %H:%M:%S')] Generating Exports for Sales-Channel #2"
/usr/bin/php -d memory_limit=-1 /var/www/creoline-demo.com/bin/console product-export:generate 082...5c00 --force
echo "[$(date '+%d/%m/%Y %H:%M:%S')] [DONE] Sales-Channel #2"


Das Script benötigt anschließend die Ausführungs-Berechtigung:

chmod +x /var/www/creoline-demo.com/product-exports.sh


Das Script kann anschließend über folgenden Befehl ausgeführt werden:

/var/www/creoline-demo.com/product-exports.sh


Sofern Sie das Script automatisiert ausführen möchten, können Sie entweder einen Cronjob über unser Kundencenter anlegen oder die Ausführung über crontab planen.


crontab -e

# Generate Product Exports every day at 00:00 
0 0 * * * /var/www/creoline-demo.com/product-exports.sh