Artikel via CSV löschen

moin,

hat jemand eine idee bzw. Lösung wie man

mehrere Artikel in einer CSV am besten via Cronjob löschen kann ?

ich habe hier bereits einen Beitrag gefunden

wo das ganze über ein PhP script läuft

welches allerdings für Shopware 4 oder so ist. Das script lässt sich so nicht in der 5er version anwenden. Evtl. hat hier ja jemand eine lösung ??!

 

du legst unter engine/Shopware/Controllers/Backend eine neue Datei DeleteArticles.php an.

Dort folgender Code:

<?php class Shopware_Controllers_Backend_DeleteArticles extends Enlight_Controller_Action
{	
	public function indexAction()
	{
		$this->View()-\>setTemplate(); $articles = array( "NR1", "NR2", "NR3" ); $api = Shopware()-\>Api()-\>Import(); foreach ($articles as $article){ $api-\>sDeleteArticle($article); } } } 

Deine Nummern trägst du unter

 $articles = array( "NR1", "NR2", "NR3" ); 

ein. Also die Liste einfach ergänzen. Man kann das auch total einfach mit CSV machen - nehmen wir an, du hast eine Datei wo es nur die Spalte Ordernumber gibt und alle Artikel aus dieser Datei sollen gelöscht werden.

Aufbau Datei CSV:
[ordernumber]
NR1
NR2
NR3

Dann würdest du den o.g. Code-Block wie folgt modifizieren.

$articles = explode("\n",file_get_contents(dirname(__FILE__)."/delete.csv"));

Die CSV-Datei heißt “delete.csv” und würde ebenfalls im Ordner /Controllers/backend abgelegt.

Aufrufen kannst du das Script dann einfach über den Browser… http://deinshop.de/backend/DeleteArticles/

Jemand eine Idee für Shopware 5.4 ? Das script ist wahrscheinlich für 3.5 gedacht gewesen…

Keiner eine Idee ?

Eine nicht uninteressanter Ansatz. Für eine Lösung würde ich mich auch interessieren!

Aber so wie es aussieht, hat hier keiner eine lösung… schade eigentlich. Wo sind denn alle die schlauen köpfe ?

Naja, früher gab es kein Plugin-System, da konntest du das so „hacky“ machen. Heute musst du dir dafür ein Plugin schreiben oder ein Script, was die Rest-API nutzt. Was fertiges gibt es da nicht.

Per Rest-API sollte das möglich sein: REST API - Examples using the article resource

Musst du dir noch ein Script schreiben, was die CSV einliest und dann die Requests an Shopware schickt.

2 „Gefällt mir“

Hab mir das mal angesehen. Geht sicherlich schöner, denn ich bin kein Programmierer, funktioniert aber: 

Der API-Client ist aus unserer Doku. Im Script sollte der Name der CSV-Datei geändert werden und die korrekten Rest-API Daten hinterlegt werden. Die Dateien sollte man ggf. noch vor Zugriff schützen. Das Script macht nichts anderes als jede Zeile der CSV an die API zu feuern und dort ein Delete auszuführen. Ich denke bei einer großen Menge an Artikeln, kann das Probleme machen, aufgrund der Scriptlaufzeit. Als Beispiel aber denke ich geeignet.

 

 

1 „Gefällt mir“

Vielen Dank für die Hilfe ! Das bringt einen ja schon ein bisschen weiter :slight_smile:

Leider funktioniert das Script nicht… hat irgend jemand einen Tip ? Muss doch möglich sein Artikel anhand einer CSV zu löschen.
Bzw. zu programieren. Leider bin ich kein Programierer, sonst hätte ich das wahrscheinlich schon gebatelt.

Wäre ganz cool wenn jemand helfen könnte ! 

Leider a bisserl spät für MenStuff, aber ich hab’ das Script gerade ausprobiert und konnte damit 6000 Daensätze löschen (Laufzeit ca. 10 Minuten). Es funktioniert also schon. Thumb-Up

@wepi‍ : hast du das Script von github unverändert übernommen oder noch Änderungen daran vorgenommen, da mir bei „function getArticleID($ordernumber)“ immer ein Fehler angezeigt wird?
 

Was für einen Fehler denn?

Hallo Moritz,

folgender Fehler wird mir beim Ausführen angezeigt:

Fatal error : Cannot redeclare getArticleID() (previously declared in /var/www/clients/client1/web4/web/engine/Shopware/Controllers/Backend/DeleteArticles.php:43) in  /var/www/clients/client1/web4/web/engine/Shopware/Controllers/Backend/DeleteArticles.php  on line  43