Программно добавьте Bundle Products в Magento, используя SKU / ID простых элементов

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

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

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

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

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

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

  $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] => )) 

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

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

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

  1. setBundleOptionsData ()
  2. setBundleSelectionsData ()
  3. setCanSaveBundleSelections (правда)

Для первого метода детали параметров Bundle предоставляются методу в качестве параметра в виде массива. Аналогичным образом, для второго метода «setBundleSelectionsData ()» мы предоставляем детали выбора Bundle для этого метода в качестве параметра в виде массива.

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


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