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