2013-10-21 2 views
0

번들 제품의 모든 옵션을 프로그래밍 방식으로 제거하고 싶습니다. 제품의 SKU 만 알고 있습니다.Magento remove 번들 제품의 옵션

나는

$bundled = Mage::getModel('catalog/product')->loadByAttribute('sku',THISISMYSKU); 

$selectionCollection = $bundled->getTypeInstance(true)->getSelectionsCollection(
      $bundled->getTypeInstance(true)->getOptionsIds($bundled), $bundled); 
      foreach($selectionCollection as $option) 
      { 

       $sku = $option->getSku(); 
       if($sku != "") 
       { 
        $optionModel = Mage::getModel('bundle/option'); 
        $optionModel->setId($option->option_id); 
        $optionModel->delete(); 
        echo 'deleted: '.$option->getName()." optionID(".$option->option_id.")"; 
       }; 

을하지만 난 루프에있는 경우, 다른 제품의 옵션을 삭제, 제대로 작동하지 않습니다.

답변

2

+0

완벽하게 작동이

$productCollection = Mage::getModel('catalog/product')->getCollection() ->addAttributeToFilter('attribute_set_id', 4) ->addAttributeToFilter('sku', array('in' => array('my-sku1', 'my-sku2', 'my-sku3'))) ->addAttributeToFilter('type_id','bundle') ->addFieldToFilter('status', Mage_Catalog_Model_Product_Status::STATUS_ENABLED); foreach($productCollection as $product) { $bundled = Mage::getModel('catalog/product'); $bundled->load($product->getId()); $selectionCollection = $bundled->getTypeInstance(true)->getSelectionsCollection( $bundled->getTypeInstance(true)->getOptionsIds($bundled), $bundled); foreach($selectionCollection as $option) { $optionModel = Mage::getModel('bundle/option'); $optionModel->setId($option->option_id); $optionModel->delete(); } } 

희망이 도움을 시도! thx – Martin

+0

'foreach'에서'$ product' 인스턴스를 이미 가지고있을 때 왜'$ bundled-> load ($ product-> getId()); '를 호출해야합니까? 그 둘은 같은가요? – KoviNET

+0

안녕하세요 이것은 빈 옵션을 삭제하는 것이 아니라 선택 항목 만있는 옵션을 삭제하는 방법입니다. emmpty 옵션도 제거 할 수 있습니까? – Martin

관련 문제