使用简单项的SKU / ID以编程方式在Magento中添加Bundle产品

时间:2010-06-24 09:43:47

标签: php magento shopping-cart bundle product

我在Magento有一些简单的目录产品,所以我有他们的SKU&标识。现在我想使用数组元素“bundle_options”和&创建一个Bundled产品。 Bundle Items的“bundle_selections”,由Magento Admin编码在其Observer类中使用。

同样在Observer类中,有两个函数“setBundleOptionsData()”&的方法调用。 “setBundleSelectionsData()”,我无法找到任何函数定义。

请在这里发表任何专业帖子,因为我需要一些正确的方法来做这件事。如果它需要,覆盖模块或使用事件,我会这样做,但我需要非常专业的帮助。 提前致谢。

修改: -
关于上述两种方法“setBundleOptionsData()”& “setBundleSelectionsData()”,我几乎可以肯定他们正在使用某种PHP魔术方法,但我不知道这些魔术方法的主要逻辑在哪里写的?

请有人提供一些正确答案。非常感谢任何帮助。

3 个答案:

答案 0 :(得分:4)

对此很难过,但发现这让我超越了驼峰:

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

            $selections = array();
            $selectionRawData[] = array(
                'selection_id' => '',
                'option_id' => '',
                'product_id' => '159',
                'delete' => '',
                'selection_price_value' => '10',
                'selection_price_type' => 0,
                'selection_qty' => 1,
                'selection_can_change_qty' => 0,
                'position' => 0);
            $selections[] = $selectionRawData;

            $productId = 182;
            $product    = Mage::getModel('catalog/product')
            ->setStoreId(0);
            if ($productId) {
                $product->load($productId);
            }
            Mage::register('product', $product);
            Mage::register('current_product', $product);
            $product->setCanSaveConfigurableAttributes(false);
            $product->setCanSaveCustomOptions(true);

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

            $product->save();

具体来说,

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

是关键

EDIT :: 在尝试添加多个选项/选择时,看起来也有一点特殊性。 setBundleOptionsData采用一系列选项,即

Array(
[1] => Array
    (
        [title] => Option 2
        [option_id] => 
        [delete] => 
        [type] => select
        [required] => 1
        [position] => 
    )

[0] => Array
    (
        [title] => Option 1
        [option_id] => 
        [delete] => 
        [type] => select
        [required] => 1
        [position] => 
    ))

然后选择将是一个选择数组的数组,其索引对应于options数组:

Array(
[1] => Array
    (
        [2] => Array
            (
                [selection_id] => 
                [option_id] => 
                [product_id] => 133
                [delete] => 
                [selection_price_value] => 0.00
                [selection_price_type] => 0
                [selection_qty] => 1
                [selection_can_change_qty] => 1
                [position] => 0
            )

        [3] => Array
            (
                [selection_id] => 
                [option_id] => 
                [product_id] => 132
                [delete] => 
                [selection_price_value] => 0.00
                [selection_price_type] => 0
                [selection_qty] => 1
                [selection_can_change_qty] => 1
                [position] => 0
            )

    )

[0] => Array
    (
        [0] => Array
            (
                [selection_id] => 
                [option_id] => 
                [product_id] => 206
                [delete] => 
                [selection_price_value] => 0.00
                [selection_price_type] => 0
                [selection_qty] => 1
                [selection_can_change_qty] => 1
                [position] => 0
            )

        [1] => Array
            (
                [selection_id] => 
                [option_id] => 
                [product_id] => 159
                [delete] => 
                [selection_price_value] => 0.00
                [selection_price_type] => 0
                [selection_qty] => 1
                [selection_can_change_qty] => 1
                [position] => 0
            )

    ))

答案 1 :(得分:2)

         $MyOptions[0] = array (
            'title' => 'My Bad','default_title' => 'My Bad',
            'delete' => '',
            'type' => 'radio',
            'required' => 0,
            'position' => 0
        );

$ optionModel = Mage :: getModel('bundle / option')                      - > addSelection( 'op111')                      - >的setTitle( 'op111')                      - > setDefaultTitle( 'op111')                      - > setParentId($ PRODUCT_ID)                      - > setStoreId($产品 - > getStoreId());             $ optionModel->保存();

答案 2 :(得分:0)

我没有使用任何Web服务。我只是使用了以下专门针对Bundled Products的方法,它们是: -

  1. setBundleOptionsData()
  2. setBundleSelectionsData()
  3. setCanSaveBundleSelections(真)
  4. 对于第一种方法,Bundle Options的详细信息作为数组形式的参数提供给方法。类似地,对于第二种方法“setBundleSelectionsData()”,我们将此方法的Bundle Selections的详细信息作为数组形式的参数提供。

    这是在Magento中添加任何捆绑产品的主要逻辑。 希望这对任何新手都有帮助!!!


    请以正确的方式检查this link以了解有关捆绑产品创建的更多详细信息。