我的问题一开始比较广泛,但稍后我会更详细。我有大约 3000 种产品,其中的 SKU 和价格位于 .csv 文件中。现在价格最近发生了变化,我想上传/更新这些产品的价格。有没有使用 SOAP API 通过脚本快速完成此操作的方法?

或者有更简单的方法来解决这个问题吗?

更新我用过这个功能 http://www.blog.magepsycho.com/updating-product-prices-in-magento-in-easier-faster-way/ 但现在价值和价格不匹配。是否有更好的选择来处理 csv,然后将每个 sku 的价格与价格进行匹配。

有帮助吗?

解决方案

我认为使用 SOAP 服务不会快速满足您的需要。我的意思是它可能会工作,但对于 3k 产品来说会非常慢。
相反,尝试这个脚本。
假设您的 csv 有 2 列。SKU 和价格。

$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
    )
}

您可以将此代码放置在您的自定义模型或助手之一中,然后运行它。您可能需要仔细检查代码。我还没有测试过。还要备份您的数据库。

[编辑]

如果您从文件运行此命令,请创建一个名为 price_update.phpindex.php 并在其中添加以下内容:

<?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();

之后,添加上面解析 csv 的代码并在浏览器中调用 MAGE_ROOT/price_update.php.

其他提示

刚刚创建可用性,价格,成本CSV-UPDATER。 有兴趣开发或贡献,所以在这里发布它。

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

关于,Eugene。

更新:记住关于简单解决方案,在Magento本身实现。

system - >导入/导出 - >“dataflow - 配置文件”

许可以下: CC-BY-SA归因
scroll top