সাধারণ পণ্য সংগ্রহ লোড করুন (উভয়ই মজুত এবং স্টক বহির্ভূত)


9

কনফিগারযোগ্য পণ্যের সমস্ত "শিশু" পণ্য সংগ্রহের মধ্যে লোড করতে আমার একটি সমস্যা হয়েছে, এমনকি স্টক বাইরে রয়েছে এমনও।

এই জাতীয় পণ্য লোড করার মত:

$simpleCollection = $configurable->getUsedProductCollection()
    ->addAttributeToSelect('*')
    ->addFilterByRequiredOptions();

foreach ($simpleCollection as $simple) {
   //$simple->getName();
}

মজাদার না হওয়া শিশু পণ্যগুলিকে উপেক্ষা করবে, সম্ভবত তারা যুক্ত হওয়া মূল্যের টেবিলে তালিকাভুক্ত নয়।

GetChildrenIds দ্বারা সমস্ত চাইল্ড আইডি লোড না করে এবং তার পরে প্রতিটি সাধারণ পণ্য লোড সহ লোড না করে কি অন্য বিকল্প আছে ?

উত্তর:


2

সমস্যাটি কল করার addStoreFilter()মধ্যে রয়েছে getUsedProductCollection():

public function getUsedProductCollection($product = null)
{
    $collection = Mage::getResourceModel('catalog/product_type_configurable_product_collection')
        ->setFlag('require_stock_items', true)
        ->setFlag('product_children', true)
        ->setProductFilter($this->getProduct($product));
    if (!is_null($this->getStoreFilter($product))) {
        $collection->addStoreFilter($this->getStoreFilter($product));
    }

    return $collection;
}

এটি কেবলমাত্র বর্তমান স্টোরে বিক্রয়যোগ্য পণ্যগুলি প্রদর্শন করতে ফিল্টারগুলি যুক্ত করে।

যদি $configurableআপনার কনফিগারযোগ্য পণ্যটির টাইপ উদাহরণ হয় তবে আপনি কল করার আগে এইভাবে স্টোর ফিল্টারটি আনসেট করতে পারেন getUsedProductCollection():

$configurable->setStoreFilter(null);

সম্পূর্ণ সমাধান:

$configurable = $product->getTypeInstance();

$configurable->setStoreFilter(null);
$simpleCollection = $configurable->getUsedProductCollection()
    ->addAttributeToSelect('*')
    ->addFilterByRequiredOptions();

foreach ($simpleCollection as $simple) {
   //$simple->getName();
}

1

আপনি যদি এইভাবে চেষ্টা করেন তবে কি হবে:

$simpleCollection = $configurable->getUsedProductCollection()
                     ->addAttributeToSelect('*')
                     //->addFilterByRequiredOptions() //don't use any filter, get all itmes
                     ;


foreach($simpleCollection as $simple){
   //$simple->getName();
}

একবার চেষ্টা করে দেখো.


1

এই প্রশ্নের বিকল্প সমাধান হিসাবে আপনি নীচের কোডটি ব্যবহার করতে পারেন:

$simpleCollection=$configurable->getTypeInstance(true)
                ->getUsedProducts(null,$configurable);

foreach($simpleCollection as $simple){
   //$simple->getName();
}

1

আপনার যদি কনফিগার করার সাথে যুক্ত পণ্য সংগ্রহের প্রয়োজন হয় তবে নিম্নলিখিতগুলির কাজ করা উচিত:

$configurableProduct = Mage::getModel('catalog/product')->load(<your_product_id>);
$associatedProducts = $configurableProduct->getTypeInstance()->getUsedProductCollection($configurableProduct);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.