Hallo zusammen,
im Plugin Guide wird erklärt wie man ein custom Plugin anlegt welches dann Produkte erstellen oder aktualisieren kann.
Ich habe aktuell den Anwendungsfall, dass ich gerne automatisiert Bestände synchronisieren möchte. Da es sich um sehr viele Produkte handelt, ist das über die Admin API zu langsam. Das direkt schreiben der Bestände in die Datenbank scheint auch zu Problemen zu führen.
Die Alternative die noch bleibt, wäre das ganze als Plugin umzusetzen und tief mit dem Shop zu verweben. Gleich ein komplettes Plugin zu erstellen scheint mir für so eine so kleine und einfache Aufgabe aber etwas übertrieben. Lieber wäre mir eigentlich ein einfaches Skript, welches ich regelmäßig per Cronjob durchlaufen lassen kann.
In der Dokumentation werden z.B. einzelne Kompnenten importier. z.B.:
use Shopware\Core\Framework\Context
Besteht auch die Möglichkeit die Komponenten in ein Skript zu importieren und zu nutzen ohne gleich ein ganzes Plugin mit Installation, Name etc drumherum bauen zu müssen?
Natürlich kann man irgendwo ein Bash-Script hinterlegen, das per Cronjob angeschubst wird und dann direkt in die Datenbank schreibt. Das geht sicher auch sehr viel schneller, als zunächst ein komplettes Framework oder gar noch die darüber liegende API zu nutzen.
ABER: Dann arbeitest Du mit komplett unformatierten Werten und müsstest diese ggf. Value für Value im Script zunächst prüfen und ggf. downstrippen. Außerdem wäre diese Lösung einzig und allein in Deinem Projekt verwert- und nicht auf andere Projekte übertragbar.
Ich hatte vor einiger Zeit ein Thema erstellt, wo es um das direkte aktualisieren der Bestände in die Datenbank ging. Es zeigte sich aber, dass das in der Praxis nicht so gut funktioniert, da der Shop die Änderungen zwar im backend übernimmt, das Frontend sich dann aber teilweise komisch verhält.
Als Alternative dazu wollte ich jetzt mal testen die Bestände dann über das Shopware Framework zu aktualisieren, da dies im Vergleich zur API noch immer schnell genug sein sollte. Da es aber nur darum geht die Bestände bei uns im Shop abzugleichen und keine Übertragbarkeit auf andere Projekte oder Shops notwendig ist, würde ich nach Möglichkeit gerne vermeiden das Skript in ein ganzes Plugin einzupacken. Deshalb die Frage ob sich das Framework (oder Teile davon) auch direkt in einem einzelnen PHP Skript importieren und nutzen lässt.
Das Problem mit unformatierten Werten sehe ich grundsätzlich auch, deshalb lasse ich Produkt Importe etc auch über die API laufen. Da auch nur selten neue Produkte Importiert werden müssen spielt da der Faktor Zeit eine nicht so große Rolle. Das darf dann auch mal 1-2 Tage dauern.
Die Bestände müssten aber im besten Fall mehrmals täglich aktulaisiert/abgeglichen werden. Da ist es schon wichtiger, dass das Skript damit nicht zu lange braucht. Der Aufwand die Bestände zu validieren und zu formatieren ist da auch noch zu vernachlässigen (anders als bei ganzen Artikeln mit Beschreibungen etc)