我正在使用Magmi和一些自定义代码生成大量捆绑产品:
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$storeID = 1;
$websiteIDs = array(1);
error_reporting(E_ALL);
ini_set('display_errors',1);
//Get bundled products
$products = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect('*')
->addAttributeToSelect('type')
//->addAttributeToFilter('type_id', 'bundle') // simpler..
->addFieldToFilter('type_id', array('eq' => 'bundle')) // simple/configurable etc
;
foreach ($products as $product){
$parentProduct = clone $product;
// get all the options of your bundle product assumed as $bundle
// remove the Selection/Bundle association from database, we need to pass all the others except the one we need to drop
Mage::getModel('bundle/mysql4_bundle')->dropAllUnneededSelections();
$options = $product->getTypeInstance()->getOptionsCollection();
foreach ($options as $option){
$option->delete();
}
$simple_skus = explode(",",$product->getBundledSkus());
$items = array();
$selections = array();
$simple_skus = array_reverse($simple_skus);
foreach ($simple_skus as $sku){
if ($sku == '')continue;
$selectionRawData = array();
$pos = 0;
$pos++;
$productId = $product->getIdBySku($sku);
$simple = $product->load($productId);
$items[] = array(
'title' => $simple->getName(),
'parent_id' => $parentProduct->getId(),
'option_id' => '',
'delete' => '',
'type' => 'checkbox',
'required' => ( strpos($sku,'harness') !== false ? 1 : 0),
'position' => $pos);
$selections[][] = array(
'selection_id' => '',
'option_id' => '',
'product_id' => $simple->getEntityId(),
'delete' => '',
'selection_price_value' => $simple->getPrice(),
'selection_price_type' => 0,
'selection_qty' => 1,
'selection_can_change_qty' => 0,
'position' => 0);
}
Mage::unregister('product');
Mage::unregister('current_product');
Mage::register('product', $parentProduct);
Mage::register('current_product', $parentProduct);
$parentProduct->setCanSaveConfigurableAttributes(false);
$parentProduct->setCanSaveCustomOptions(true);
如果你在后端查看它,一切似乎都设置正确,如果你输入网址,你可以直接进入产品,一切正常,可以添加到购物篮等 - 见{{ 3}}作为一个例子。
但是,即使已将产品分配到正确的类别,也不会在类别或搜索中返回任何产品。
如果我在后端创建捆绑产品,使用与生成的捆绑包完全相同的值,它将按预期工作并显示。
我尝试过的一些事情:
我确定我错过了一些明显的东西,一张我需要更新的桌子或其他东西,但我不确定是什么!
答案 0 :(得分:0)
我在以编程方式创建的捆绑产品时遇到了完全相同的问题:没有出现在目录或搜索结果中,但能够在通过直接网址访问时看到该产品。
正如@MagePsycho所提到的,这是由catalog_product_index_price
和catalog_product_index_price_bundle_idx
表中缺少条目引起的。
在保存捆绑产品之前添加对$bundle_product->setData('price_type', 0);
的呼叫解决了问题。
但是,我看到您通过克隆另一个捆绑产品来获取捆绑产品,因此我不确定此解决方案是否可行。请试试。