Программно добавляйте продукты пакета в Magento, используя артикул/идентификатор простых товаров


У меня есть несколько простых продуктов каталога в Magento, поэтому у меня есть их артикулы и идентификаторы. Теперь я хочу создать комплектный продукт, используя элементы массива "bundle_options" и "bundle_selections" элементов пакета, которые используются администратором Magento в своем классе Observer.

Также в классе Observer есть вызовы методов двух функций "setBundleOptionsData()" & "setBundleSelectionsData()", для которого я не могу найти никакого определения функции.

Пожалуйста, любой профессиональный пост здесь, потому что я нужен какой-то правильный способ сделать это. Если потребуется, переопределение модулей или использование событий, я сделаю это, но мне нужна действительно профессиональная помощь. Заранее спасибо.

Редактировать:-
Что касается двух методов, упомянутых выше "setBundleOptionsData()" & "setBundleSelectionsData()", в чем я почти уверен, так это в том, что они используют какие-то магические методы PHP, но я не знаю, где написана основная логика этих магических методов?

Пожалуйста, кто-нибудь, дайте какой-нибудь правильный ответ. Любая помощь очень важна оцененный.

Author: Knowledge Craving, 2010-06-24

3 answers

Мне было трудно с этим, но я обнаружил, что это помогло мне преодолеть трудности:

                $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);

Был ключом

РЕДАКТИРОВАТЬ:: Также похоже, что есть небольшая особенность при попытке добавить несколько опций/вариантов выбора. 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] => 
    ))

И тогда выборки будут представлять собой массив массивов выборок с их индексами, соответствующими массиву параметров:

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
            )

    ))
 4
Author: Benjamin Powers, 2010-12-14 22:14:43
         $MyOptions[0] = array (
            'title' => 'My Bad','default_title' => 'My Bad',
            'delete' => '',
            'type' => 'radio',
            'required' => 0,
            'position' => 0
        );

Или

$optionmodel =Маг::getModel('комплект/опция') ->Добавление выбора ('op111') ->Настройка ('op111') ->setdefaulttitle('op111')->Установить значение по умолчанию ('op111') ->setparentid ($идентификатор продукта) ->setstoreid($продукт ->getstoreid()); $optionmodel->сохранить();

 2
Author: vnaz, 2010-07-08 11:53:37

Для этого я не использую никаких веб-сервисов. Я просто использовал следующие методы, предназначенные специально для Комплектных продуктов, а именно: -

  1. setbundleoptionsdata()
  2. setbundleselectionsdata()
  3. setcansavebundleselections(истинно)

Для первого метода подробные сведения о параметрах пакета предоставляются методу в качестве параметра в виде массива. Аналогично, для второго метода "setbundleselectionsdata()" мы предоставляем подробные сведения о выборе пакета для этого метода в качестве параметра в виде массива.

Это основная логика в том, что происходит при добавлении любого продукта в комплекте в Magento. Надеюсь, это поможет любым новичкам!!!


Пожалуйста, проверьте эту ссылку для получения более подробной информации о правильном создании пакета продуктов.

 0
Author: Knowledge Craving, 2017-05-23 12:11:47