2010-06-24 13 views
6

Tengo algunos productos de catálogo simples en Magento, así que tengo sus SKUs & IDs. Ahora quiero crear un producto incluido utilizando los elementos de la matriz "bundle_options" & "bundle_selections" de los Elementos de paquete, que son utilizados por la codificación Magento Admin en su clase de observador.Agregue productos Bundle programáticamente en Magento, utilizando el SKU/ID de elementos simples

También en la clase Observador, existen las llamadas de método de dos funciones "setBundleOptionsData()" & "setBundleSelectionsData()", para la cual yo no soy capaz de encontrar ninguna definición de la función.

Por favor, cualquier publicación profesional aquí, porque necesito una forma adecuada de hacer esto. Si es necesario, reemplazando módulos o usando eventos, lo haré, pero necesito ayuda profesional. Gracias de antemano.

Editar: -
En cuanto a los dos métodos mencionados anteriormente "setBundleOptionsData()" & "setBundleSelectionsData()", lo que estoy casi seguro es que están utilizando algún tipo de métodos mágicos PHP, pero no saben dónde la lógica principal de estos métodos mágicos está escrita?

Por favor, que alguien proporcione una respuesta correcta. Cualquier ayuda es muy apreciada.

+0

Todavía estoy esperando por algún cuerpo para proporcionar alguna información más útil. –

+0

Consulte este enlace para obtener información más valiosa sobre cómo agregar productos Bundle programáticamente, de manera correcta. http://stackoverflow.com/questions/6161128/magento-programatically-added-bundle-product-isnt-showing-up-in-frontend/6161246#6161246 –

Respuesta

0

No estoy usando ningún servicio web, para esto. He utilizado simplemente los siguientes métodos destinados específicamente para los Productos liados, que son: -

  1. setBundleOptionsData()
  2. setBundleSelectionsData()
  3. setCanSaveBundleSelections (true)

Para el primer método , los detalles de las Opciones de paquete se proporcionan al método como el parámetro en forma de una matriz. Del mismo modo, para el segundo método "setBundleSelectionsData()", proporcionamos los detalles de las selecciones de paquetes a este método como el parámetro en forma de una matriz.

Esta es la lógica principal de lo que ocurre al agregar cualquier Producto incluido en Magento. Espero que esto ayude a cualquier novato !!!


favor verifique this link para más detalles sobre la creación del paquete del producto de una manera adecuada.

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

o

$ optionModel = Mago :: getModel ('paquete/opción') -> addSelection ('op111') -> setTitle ('op111') -> setDefaultTitle (' op111 ') -> setParentId ($ product_id) -> setStoreId ($ product-> getStoreId()); $ optionModel-> save();

+0

Gracias amigo, tu segunda solución funcionó para mí. –

4

estaba teniendo un tiempo duro con esto, pero encontró que esto me puso sobre la chepa:

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

En concreto, el

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

fue la clave

EDITAR :: También parece que hay una peculiaridad cuando intentas agregar múltiples opciones/selecciones. El setBundleOptionsData toma una matriz de opciones, es decir,

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

Y entonces las selecciones serán una serie de selecciones matrices con sus índices correspondientes a las opciones de matriz:

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 
      ) 

    )) 
+0

Gracias TON querida, me rescataste de un gran caos. Especialmente el código para múltiples opciones y productos fue salvador de vida. Muchas gracias. –

Cuestiones relacionadas