কনফিগারযোগ্য পণ্য বিকল্পগুলির দাম পান


9

আমার কাছে ম্যাজেন্টো 1.7 থেকে দাম সহ সমস্ত পণ্য রফতানি করতে হবে।

সাধারণ পণ্যগুলির জন্য এটি কোনও সমস্যা নয়, তবে কনফিগারযোগ্য পণ্যগুলির জন্য আমার এই সমস্যা রয়েছে: রফতানি হওয়া মূল্যটি সম্পর্কিত সাধারণ পণ্যটির জন্য মূল্য সেট হয়! আপনি জানেন যে, ম্যাজেন্টো এই মূল্যটিকে উপেক্ষা করে এবং নির্বাচিত বিকল্পগুলির জন্য কনফিগারযোগ্য পণ্য এবং সামঞ্জস্যের দাম ব্যবহার করে।

আমি প্যারেন্ট পণ্যগুলির দাম পেতে পারি, তবে নির্বাচিত বিকল্পগুলির উপর নির্ভর করে আমি কীভাবে পার্থক্যটি গণনা করব?

আমার কোডটি এরকম কিছু দেখাচ্ছে:

foreach($products as $p)
   {
    $price = $p->getPrice();
            // I save it somewhere

    // check if the item is sold in second shop
    if (in_array($otherShopId, $p->getStoreIds()))
     {
      $otherConfProd = Mage::getModel('catalog/product')->setStoreId($otherShopId)->load($p->getId());
      $otherPrice = $b2cConfProd->getPrice();
      // I save it somewhere
      unset($otherPrice);
     }

    if ($p->getTypeId() == "configurable"):
      $_associatedProducts = $p->getTypeInstance()->getUsedProducts();
      if (count($_associatedProducts))
       {
        foreach($_associatedProducts as $prod)
         {
                            $p->getPrice(); //WRONG PRICE!!
                            // I save it somewhere
                        $size $prod->getAttributeText('size');
                        // I save it somewhere

          if (in_array($otherShopId, $prod->getStoreIds()))
           {
            $otherProd = Mage::getModel('catalog/product')->setStoreId($otherShopId)->load($prod->getId());

            $otherPrice = $otherProd->getPrice(); //WRONG PRICE!!
                            // I save it somewhere
            unset($otherPrice);
            $otherProd->clearInstance();
            unset($otherProd);
           }
         }
                     if(isset($otherConfProd)) {
                         $otherConfProd->clearInstance();
                            unset($otherConfProd);
                        }
       }

      unset($_associatedProducts);
    endif;
  }

উত্তর:


13

আপনি কীভাবে সাধারণ পণ্যগুলির দাম পেতে পারেন তা এখানে। উদাহরণটি একটি একক কনফিগারযোগ্য পণ্যের জন্য তবে আপনি এটিকে আপনার লুপে সংহত করতে পারেন।
পারফরম্যান্সে সমস্যা হতে পারে কারণ প্রচুর foreachলুপ রয়েছে তবে কমপক্ষে আপনার শুরু করার জায়গা রয়েছে। আপনি পরে অনুকূলিত করতে পারেন।

//the configurable product id
$productId = 126; 
//load the product - this may not be needed if you get the product from a collection with the prices loaded.
$product = Mage::getModel('catalog/product')->load($productId); 
//get all configurable attributes
$attributes = $product->getTypeInstance(true)->getConfigurableAttributes($product);
//array to keep the price differences for each attribute value
$pricesByAttributeValues = array();
//base price of the configurable product 
$basePrice = $product->getFinalPrice();
//loop through the attributes and get the price adjustments specified in the configurable product admin page
foreach ($attributes as $attribute){
    $prices = $attribute->getPrices();
    foreach ($prices as $price){
        if ($price['is_percent']){ //if the price is specified in percents
            $pricesByAttributeValues[$price['value_index']] = (float)$price['pricing_value'] * $basePrice / 100;
        }
        else { //if the price is absolute value
            $pricesByAttributeValues[$price['value_index']] = (float)$price['pricing_value'];
        }
    }
}

//get all simple products
$simple = $product->getTypeInstance()->getUsedProducts();
//loop through the products
foreach ($simple as $sProduct){
    $totalPrice = $basePrice;
    //loop through the configurable attributes
    foreach ($attributes as $attribute){
        //get the value for a specific attribute for a simple product
        $value = $sProduct->getData($attribute->getProductAttribute()->getAttributeCode());
        //add the price adjustment to the total price of the simple product
        if (isset($pricesByAttributeValues[$value])){
            $totalPrice += $pricesByAttributeValues[$value];
        }
    }
    //in $totalPrice you should have now the price of the simple product
    //do what you want/need with it
}

উপরের কোডটি সিই -১.০.০.০. তে পরীক্ষিত হয়েছিল ম্যাজেন্টো নমুনা ডেটার সাথে 1.6.0.0 এর জন্য।
আমি জোলোফ দ্য রক অ্যান্ড রোল ডাস্ট্রোয়ার: পণ্যটিতে পরীক্ষা করেছি : এলএল বিড়াল টি-শার্ট এবং এটি কাজ করে ams আমি পণ্য কনফিগার পর আমি ফ্রন্টএন্ড মধ্যে দেখতে একই দামের ফলাফল হিসাবে পেতে SizeএবংColor


3

এটি কি এমন হতে পারে যে আপনি নীচের কোডে পরিবর্তন $pকরতে হবে $prod?

 foreach($_associatedProducts as $prod)
         {
                            $p->getPrice(); //WRONG PRICE!!

2

আমি এটি এইভাবে করি:

$layout = Mage::getSingleton('core/layout');
$block = $layout->createBlock('catalog/product_view_type_configurable');
$pricesConfig = Mage::helper('core')->jsonDecode($block->getJsonConfig());

অতিরিক্ত হিসাবে, আপনি এটি Varien_Object এ রূপান্তর করতে পারেন:

$pricesConfigVarien = new Varien_Object($pricesConfig);

সুতরাং মূলত আমি একই পদ্ধতিটি ব্যবহার করছি যা ম্যাজেন্টো কোরটিতে আপনার কনফিগারযোগ্য পণ্য পৃষ্ঠার জন্য মূল্য গণনা করতে ব্যবহৃত হয়।


0

এটির সাহায্য করবে কিনা তা নিশ্চিত নয় তবে আপনি কনফিগারযোগ্য.এফটিএমএল পৃষ্ঠায় এই কোডটি যুক্ত করলে এটি প্রতিটি বিকল্পের দাম এবং এর লেবেলের সাথে কনফিগারযোগ্য পণ্যগুলির সুপার অ্যাট্রিবিউটকে স্পিট করে ফেলে।

   $json =  json_decode($this->getJsonConfig() ,true);


    foreach ($json as $js){
        foreach($js as $j){

      echo "<br>";     print_r($j['label']); echo '<br/>';

            foreach($j['options'] as $k){
                echo '<br/>';     print_r($k['label']); echo '<br/>';
                print_r($k['price']); echo '<br/>';
            }
        }
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.