구성 가능한 제품의 모든 “자식”제품을 컬렉션에로드하는 중에 문제가 발생했습니다.
다음과 같이 제품을로드하는 것처럼 :
$simpleCollection = $configurable->getUsedProductCollection()
->addAttributeToSelect('*')
->addFilterByRequiredOptions();
foreach ($simpleCollection as $simple) {
//$simple->getName();
}
재고가없는 하위 제품은 가격표에 나열되지 않았거나 조인 된 하위 제품을 무시합니다.
getChildrenIds로 모든 자식 ID를로드하지 않고 다른 간단한 제품을 로드 하여 로드하는 또 다른 옵션이 있습니까?
답변
문제는에서 호출에 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();
}
답변
이 방법으로 시도하면 어떻게됩니까?
$simpleCollection = $configurable->getUsedProductCollection()
->addAttributeToSelect('*')
//->addFilterByRequiredOptions() //don't use any filter, get all itmes
;
foreach($simpleCollection as $simple){
//$simple->getName();
}
시도 해봐.
답변
이 질문에 대한 대안 솔루션으로 아래 코드를 사용할 수 있습니다.
$simpleCollection=$configurable->getTypeInstance(true)
->getUsedProducts(null,$configurable);
foreach($simpleCollection as $simple){
//$simple->getName();
}
답변
구성 가능한 제품과 관련된 제품 모음이 필요한 경우 다음이 작동합니다.
$configurableProduct = Mage::getModel('catalog/product')->load(<your_product_id>);
$associatedProducts = $configurableProduct->getTypeInstance()->getUsedProductCollection($configurableProduct);