Artikel löschen über csv-Datei möglich?

Hallo Ihr Lieben, nachdem ich nun schon den ganzen morgen rumsuche, würde ich gerne hier einmal in die Runde fragen. Vielleicht ist die Lösung ja näher als ich denke. Ich habe meinen ganzen Artikelstamm aus meinem alten xtc-Shop migriert, was ja wirklich super funktioniert. Beim genaueren nacharbeiten und überarbeiten der Artikel ist mir jetzt schon mehrfach aufgefallen, dass ich doch einige Datei-Leichen mit rübergeschleppt habe. Es sind viele alte Artikel da drin, die einmal eine neue Artikel-Nr. erhalten haben und dadurch jetzt doppelt sind, die meisten zwar inaktiv aber vereinzelt auch aktiv mit falschen Preisen/Bestand. Jetzt würde ich meinen neuen Shop gerne von Grund auf aufräumen und alles alte raushaben. Allerdings möchte ich nicht gerne alle gut 4000 Artikel von Hand durchgehen und Nummern vergleichen. Vielleicht geht es ja einfacher. Mit meinen csv-Listen vom Grosshändler könnte ich alle alten Artikel-Nummern auslesen. Wenn ich jetzt eine csv-Datei habe, wo alle Artikel-Nr. drinstehen, die RAUS müssen, kann ich diese dann automatisch löschen lassen? Also quasi Artikel-Import mal andersrum. Wenn nicht mit Shopware vielleicht direkt über die Datenbank? Kenne mich mit sql und den Befehlen nicht so aus, aber das ist ja recht flexibel. Will jetzt auch nicht auf eigene Faust rumfummeln, mach dann mehr kaputt wie besser :wink: Wenn einer einen Rat hätte, wäre super lieb!! Liebe Grüße Tatjana

Du kannst die am besten über ein kleines Script löschen, 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/index (Funktioniert nur, wenn du im Backend eingeloggt bist!)

1 Like

Auweia, ist ja doch komplizierter als ich dachte. Werde mir das mal genauer anschauen und verinnerlichen für die nächste Artikel-Nr.-Umstellung. Jetzt habe ich meine Datei-Leichen erst mal aussortiert. In einem anderen Forum hatte ich einen „Trick“ entdeckt, der für mich erst mal leichter umzusetzen war. Ich habe mir kurzerhand meine Datei mit den alten Nummern genommen und jeden Artikel in „Alter Artikel“ umbenannt. So konnte ich im Backend einfach alle Artikel mit dem Namen „Alter Artikel“ auswählen und komplett löschen :wink: Das ist dann die Variante für die Programier-Banausen unter uns. Aber die Variante mit dem Script ist natürlich eleganter. Vielen Dank dafür! LG Tatjana

Kann man das auch im 4er anwenden?