Estoy trabajando en crear una opción personalizada para mis productos automáticamente cada vez que se crea un producto. Lo que tengo hasta ahora es un observador que dispara el catalog_product_save_before
evento y ejecuta el siguiente código:
//check that we haven't made the option already
$options = $product->getProductOptions();
foreach ($options as $option) {
if ($option['title'] == 'Auto Date & Time' && $option['type'] == 'date_time' && !$option['is_delete']) {
//we've already added the option
return;
}
}
$options[] = array(
'title' => $product->getDateLabel(),
'type' => 'date_time',
'is_require' => 1,
'sort_order' => 0,
'is_delete' => '',
'previous_type' => '',
'previous_group' => '',
'price' => '0.00',
'price_type' => 'fixed',
'sku' => ''
);
$product->setProductOptions($options);
$product->setCanSaveCustomOptions(true);
//this line doesnt make sense here, but it works ... kinda
$product->save();
Si dejo la entrada $product->save()
, termino con 2 opciones personalizadas que se crean, a pesar de que compruebo para verificar la segunda vez que se activa el evento, la declaración de devolución se llama en el bucle foreach.
Si lo saco. No se crean opciones personalizadas.
¿Alguien puede decirme qué estoy haciendo mal?
Estoy trabajando con Magento 1.7