Magento以编程方式创建捆绑产品 [英] Magento programmatically create bundle Product

查看:118
本文介绍了Magento以编程方式创建捆绑产品的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在哪里可以找到在PHP中创建BundleProducts的完整且有效的示例?
我正在使用Magento 1.7

Where can I find a complete and working example for creating BundleProducts in PHP? I'm using Magento 1.7

Google只给我片段

Google gives me only fragments

编辑:

直到现在我都在这个代码,但是保存抛出

until now I'm at this code, but the save throws


致命错误:在第73行的\app\code\core\Mage\Bundle\Model\Selection.php中的非对象上调用成员函数getStoreId()

Fatal error: Call to a member function getStoreId() on a non-object in \app\code\core\Mage\Bundle\Model\Selection.php on line 73

-

---删除旧代码 -

---removed old code--

EDIT 2
好​​了注册产品的例外情况已经消失,我的捆绑包出现在后端,但捆绑项目没有显示在管理面板中

EDIT 2 Ok the exception has gone by registering the product and my bundle appears in the backend, but the bundle items do not show up in the admin panel

$items = array();
    $selections = array ();

    $items[] = array(
                'title' => '',
                'option_id' => '',
                'delete' => '',
                'type' => 'radio',
                'required' => 'true',
                'position' => 0,
            );

    $items[] = array(
                'title' => '',
                'option_id' => '',
                'delete' => '',
                'type' => 'radio',
                'required' => 'true',
                'position' => 0,
            );

    $selection = array();
    $selection[] = array(
                'selection_id' => '',
                'option_id' => '',
                'product_id' => '2',
                'delete' => '',
                'selection_price_value' => '',
                'selection_price_type' => '0',
                'selection_qty' => '1',
                'selection_can_change_qty' => '0',
                'position' => '0',
                'is_default' => '1',
            );
    $selections[] = $selection;

    $selection = array();
    $selection[] = array(
                'selection_id' => '',
                'option_id' => '',
                'product_id' => '3',
                'delete' => '',
                'selection_price_value' => '',
                'selection_price_type' => '0',
                'selection_qty' => '1',
                'selection_can_change_qty' => '0',
                'position' => '0',
                'is_default' => '1',
            );
    $selections[] = $selection;

    $storeID = 1;
    $websiteIDs = array(1);
    $product = Mage::getModel('catalog/product');

    $p = array(
            'sku_type' => 0,
            'sku' => '123321',
            'name' => "BarProduct",
            'description' => 'Foo',
            'short_description' => 'Bar',
            'type_id' => 'bundle',
            'attribute_set_id' => 4,
            'weight_type' => 0,
            'visibility' => 4,
            'price_type' => 0,
            'price_view' => 0,
            'status' => 1,
            'created_at' => strtotime('now'),
            'category_ids' => $cats,
            'store_id' => $storeID,
            'website_ids' => $websiteIDs
    );
    $product->setData($p);

    Mage::register('product', $product);
    Mage::register('current_product', $product);

    $product->setBundleOptionsData($items);
    $product->setBundleSelectionsData($selections);
    $product->setCanSaveBundleSelections(true);
    $product->setCanSaveConfigurableAttributes(false);
    $product->setAffectBundleProductSelections(true);
    $product->setCanSaveCustomOptions(true);

    $product->save();


推荐答案

好的,这段代码现在对我有用:

Ok this code is working for me now:

$processes = Mage::getSingleton('index/indexer')->getProcessesCollection();
    $processes->walk('setMode', array(Mage_Index_Model_Process::MODE_MANUAL));
    $processes->walk('save');


    $items = array();
    $selections = array ();

    $items[] = array(
            'title' => 'o1',
            'option_id' => '',
            'delete' => '',
            'type' => 'radio',
            'required' => '1',
            'position' => '0',
    );

    $items[] = array(
            'title' => 'o2',
            'option_id' => '',
            'delete' => '',
            'type' => 'radio',
            'required' => '1',
            'position' => '0',
    );

    $selection = array();
    $selection[] = array(
            'selection_id' => '',
            'option_id' => '',
            'product_id' => '2',
            'delete' => '',
            'selection_price_value' => '',
            'selection_price_type' => '0',
            'selection_qty' => '1',
            'selection_can_change_qty' => '0',
            'position' => '0',
            'is_default' => '1',
    );
    $selections[] = $selection;

    $selection = array();
    $selection[] = array(
            'selection_id' => '',
            'option_id' => '',
            'product_id' => '3',
            'delete' => '',
            'selection_price_value' => '',
            'selection_price_type' => '0',
            'selection_qty' => '1',
            'selection_can_change_qty' => '0',
            'position' => '0',
            'is_default' => '1',
    );
    $selections[] = $selection;



    $storeID = 1;
    $websiteIDs = array(1);
    Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);

    $product = Mage::getModel('catalog/product');

    $cats = array(3);

    $p = array(
            'sku_type' => 1,
            'sku' => '123321',
            'name' => "BarProduct",
            'description' => 'Foo',
            'short_description' => 'Bar',
            'type_id' => 'bundle',
            'attribute_set_id' => 4,
            'weight_type' => 0,
            'visibility' => 4,
            'price_type' => 1,
            'price_view' => 0,
            'price' => 1.99,
            'has_options' => 1,
            'required_options' => 1,
            'status' => 1,
            'created_at' => strtotime('now'),
            'category_ids' => $cats,
            'store_id' => 0,
            'website_ids' => $websiteIDs,
            'weight' => 0,
            'weight_type' => 1,
            'delivery_time' => '',
            'generate_meta' => 1,
            'tax_class_id' => 1, //19%
    );
    $product->setData($p);

    Mage::register('product', $product);
    Mage::register('current_product', $product);
    $product->setCanSaveConfigurableAttributes(false);
    $product->setCanSaveCustomOptions(true);


    // Set the Bundle Options & Selection Data
    $product->setBundleOptionsData($items);
    $product->setBundleSelectionsData($selections);
    $product->setCanSaveBundleSelections(true);
    $product->setAffectBundleProductSelections(true);

    $product->save();

    $processes->walk('setMode', array(Mage_Index_Model_Process::MODE_REAL_TIME));
    $processes->walk('save');
    $processes->walk('reindexEverything');

这篇关于Magento以编程方式创建捆绑产品的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆