단순 제품 콜렉션로드 (둘 다, 재고 및 품절)


9

구성 가능한 제품의 모든 "자식"제품을 컬렉션에로드하는 중에 문제가 발생했습니다.

다음과 같이 제품을로드하는 것처럼 :

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

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

재고가없는 하위 제품은 가격표에 나열되지 않았거나 조인 된 하위 제품을 무시합니다.

getChildrenIds로 모든 자식 ID를로드하지 않고 다른 간단한 제품을 로드 하여 로드하는 또 다른 옵션이 있습니까?

답변:


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.