У меня есть несколько простых продуктов каталога в 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 ();
Для этого я не использую веб-сервисы. Я просто использовал следующие методы, специально предназначенные для поставляемых продуктов, которые:
Для первого метода детали параметров Bundle предоставляются методу в качестве параметра в виде массива. Аналогичным образом, для второго метода «setBundleSelectionsData ()» мы предоставляем детали выбора Bundle для этого метода в качестве параметра в виде массива.
Это основная логика в том, что происходит для добавления какого-либо добавленного продукта в Magento. Надеюсь, это поможет любому новичку !!!
Пожалуйста, проверьте эту ссылку для получения более подробной информации о создании продукта Bundle.