سؤال

سؤالي أكثر شمولاً في البداية ولكني سأخوض في التفاصيل لاحقًا.لدي حوالي 3000 منتج حيث لدي Skus والأسعار في ملف بتنسيق .csv.الآن تغيرت الأسعار مؤخرًا وأرغب في تحميل/تحديث أسعار المنتجات هذه.هل هناك طريقة سريعة للقيام بذلك عبر برنامج نصي باستخدام SOAP API؟

أم أن هناك طريقة أسهل للتغلب على هذا؟

تحديثلقد استخدمت هذه الوظيفة http://www.blog.magepsycho.com/updating-product-prices-in-magento-in-easier-faster-way/ ولكن الآن عدم تطابق القيمة والسعر.هل هناك أي خيارات أفضل من خلال تصفح ملف CSV ثم مطابقة أسعار كل SKU بالسعر؟

هل كانت مفيدة؟

المحلول

لا أعتقد أن استخدام خدمات SOAP سيوفر لك ما تحتاجه بسرعة.أعني أنه من المحتمل أن يعمل، لكنه سيكون بطيئًا جدًا بالنسبة إلى 3 آلاف منتج.
بدلا من ذلك حاول هذا البرنامج النصي.
لنفترض أن ملف CSV الخاص بك يحتوي على عمودين.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.php على نفس المستوى index.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.

نصائح أخرى

href="https://i.stack.imgur.com/fewmx.png" rel="nofollow noreferrer">  أدخل وصف الصورة هنا تم إنشاؤه للتو، السعر، تكلف CSV-Updater. مهتم بالتنمية أو المساهمة، لذلك نشرها هنا.

http://lycenok.com/magento-etherensions/magento-CSV-Product-Updater.html https://github.com/lycenok/magento_csv_product_updater

التحيات، يوجين.

تحديث: تذكر الحل البسيط، الذي تم تنفيذه في Magento نفسه.

النظام -> استيراد / تصدير -> "Dataflow - ملفات تعريف"

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top