Frage

Meine Frage ist zu Beginn etwas umfassender, aber ich werde später detaillierter darauf eingehen.Ich habe etwa 3000 Produkte, bei denen ich die SKUs und Preise in einer CSV-Datei habe.Nun haben sich die Preise kürzlich geändert und ich möchte diese Preise der Produkte hochladen/aktualisieren.Gibt es eine schnelle Möglichkeit, dies über ein Skript mithilfe der SOAP-API zu tun?

Oder gibt es einen einfacheren Weg, dies zu umgehen?

AKTUALISIERENIch habe diese Funktion genutzt http://www.blog.magepsycho.com/updating-product-prices-in-magento-in-easier-faster-way/ aber jetzt stimmen Wert und Preis nicht überein.Gibt es bessere Möglichkeiten, eine CSV-Datei durchzugehen und dann die Preise für jede SKU einem Preis zuzuordnen?

War es hilfreich?

Lösung

Ich glaube nicht, dass Sie mit den SOAP-Diensten schnell das bekommen, was Sie brauchen.Ich meine, es wird wahrscheinlich funktionieren, aber für 3K-Produkte wird es sehr langsam sein.
Versuchen Sie stattdessen dieses Skript.
Nehmen wir an, Ihre CSV-Datei hat zwei Spalten.Artikelnummer und Preis.

$skuIndex = 0;
$priceIndex = 1;
$csv = 'path/to/file.csv';
$io = new Varien_Io_File();
//an array to keep the products by price
$productIdsByPrice = array();
//a product model instance
$productModel = Mage::getSingleton('catalog/product');
//read the csv
$io->streamOpen($csv, 'r+');
while($csvData = $io->streamReadCsv()){
   if (count($csvData) < 2) { //skip rows with less than 2 columns
       continue;
   }
   $sku = trim($csvData[$skuIndex]);
   //get the product id by sku
   $id = $productModel->getIdBySku($sku);
   if ($id) {
      //if the id exists then mark it for update
      $price = trim($csvData[$priceIndex]);
      if (!isset($productIdsByPrice[$price])) {
         $productIdsByPrice[$price] = array();
      }
      $productIdsByPrice[$price][] = $id;
   }
}
//now you should have the product ids you need to update grouped by price
//just do the fast update
foreach ($productIdsByPrice as $price => $ids) {
    Mage::getSingleton('catalog/product_action')->updateAttributes(
        $ids, //what products to update
        array('price' => $price), //what attributes to update
        0 //store id for update
    )
}

Sie können diesen Code in einem Ihrer benutzerdefinierten Modelle oder Helfer platzieren und ihn dann ausführen.Möglicherweise möchten Sie den Code noch einmal überprüfen.Ich habe es nicht getestet.Sichern Sie auch Ihre Datenbank.

[BEARBEITEN]

Wenn Sie dies aus einer Datei ausführen, erstellen Sie eine Datei mit dem Namen price_update.php auf dem gleichen Niveau wie index.php und füge Folgendes hinzu:

<?php 
error_reporting(E_ALL | E_STRICT);
define('MAGENTO_ROOT', getcwd()); 
$mageFilename = MAGENTO_ROOT . '/app/Mage.php'; 
require_once $mageFilename; 
Mage::setIsDeveloperMode(true); 
ini_set('display_errors', 1);
umask(0);
Mage::app();

Fügen Sie anschließend den Code von oben hinzu, der die CSV-Datei analysiert, und rufen Sie Ihren Browser auf MAGE_ROOT/price_update.php.

Andere Tipps

 eingeben Beschreibung hier eingeben erstellt Verfügbarkeit, Preis, Kosten CSV-Updater. Interessiert an Entwicklungs- oder Beitrags, also veröffentlichen Sie es hier.

http://lycenok.com/magento-extensions/magento-csv-product-uphater.html https://github.com/lycenok/magento_csv_product_updater

Grüße, Eugene.

update: Erinnern Sie sich an die einfache Lösung, die in Magento selbst implementiert ist.

System -> Import / Export -> "DataFlow - Profile"

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top