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.
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.
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.
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.
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.
@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?
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