estado predeterminado de la opción personalizada para productos simples

11

Tengo una serie de productos con opciones personalizadas de tipo casilla de verificación. Sin embargo, no puedo establecer desde la configuración del producto el estado predeterminado de esa opción en particular.

Necesito que al menos una de las casillas de verificación (opciones) esté marcada de forma predeterminada cuando el usuario ingresa a la página del producto / agrega al carrito desde la página de categoría.

¿Es factible esto de la administración de Magento o requerirá un desarrollo adicional (si es así, cómo se puede hacer esto)?

Miguel
fuente
No puede establecer "es predeterminado" en Catálogo -> Administrar atributos -> "Su atributo" -> Administrar etiqueta / Opciones -> justo al lado de su opción predeterminada ... o si usa el Tipo de entrada "sí / no" puede establecer el valor predeterminado en las propiedades del atributo
Stefan Gregori
En realidad, las opciones ahora están configuradas con "Opciones personalizadas" desde la página del producto en admin. ¿Su sugerencia es transformar eso en atributos del producto? ¿Mantendría el mismo comportamiento para el precio del producto?
Mike

Respuestas:

16

No sé si recomendar una extensión cuenta como una respuesta válida (para una pregunta con una recompensa), pero alguien afirma aquí que escribió una extensión que hace exactamente lo que necesita. La extensión se puede descargar desde aquí . No lo he probado pero, tan pronto como lo haga, publicaré y actualizaré. Solo miré el código y hay mucho. Perdí el interés después de 2 archivos. Espero que te funcione.

[EDITAR]
He recuperado mi interés. la extensión en y (casi) funciona.
Si lo usa con el modo desarrollador, obtendrá algunos errores. Esto es lo que necesita cambiar para que funcione.
en la /app/code/local/Magebuzz/Customoption/controllers/Adminhtml/CustomoptionController.phplínea 28 hay esto:

$model->setData('value['.$option_id.']',$value[0]['option_type_id']);

Esto muestra una advertencia de "índice indefinido". Para evitarlo, envuélvalo en una ifdeclaración.

if (isset($value[0])){
    $model->setData('value['.$option_id.']',$value[0]['option_type_id']);
}

En la /app/code/local/Magebuzz/Customoption/Block/Adminhtml/Customoption/Edit/Tab/Form.phplínea 129 hay esto:

foreach ($values as $value) {
    $valuesArr[$value['option_type_id']]=$value['title'];
}

$values puede ser nulo, así que cambie el código a esto:

if (is_array($values)){
    foreach ($values as $value) {
        $valuesArr[$value['option_type_id']]=$value['title'];
    }
}

Ahora debería funcionar.
Ahora alguna reseña.

  1. PRO . Funciona perfectamente para opciones desplegables y personalizadas de radio
  2. NEURTAL . Tipo de trabajos para múltiples opciones de selección y casilla de verificación personalizadas. Puede seleccionar solo un valor para los valores disponibles.
  3. Inconveniente pero puedo pasarlo por alto. Para establecer los valores predeterminados, debe hacer clic en otro elemento del menú en el backend y buscar su producto en la lista.
  4. Con . No funciona para texto, área de texto, fecha, fecha y hora, hora, opciones personalizadas de archivo. Pero con un poco de trabajo se puede cambiar para que funcione correctamente para todos los tipos (tal vez excepto el archivo).
Marius
fuente
1

No predeterminado en Magento.

Se puede lograr de esta manera. Lo mejor es volver a subir antes de continuar.

$option = array(
    'title' => 'Your custom option title',  
    'type' => 'checkbox', // could be drop_down ,radio , multiple
    'is_require' => 1,
    'sort_order' => 0,
    'values' => getOptions()
    );

function getOptions(){
  return array(
     array(
       'title' => 'Option Value 1',
       'price' =>100,
       'price_type' => 'fixed',
       'sku' => 'any sku for 1',
       'sort_order' => '1'
    ),
    array(
       'title' => 'Option Value 2',
       'price' =>100,
       'price_type' => 'fixed',
       'sku' => 'any sku for 2',
       'sort_order' => '1'
    ),
  array(
       'title' => 'Option Value 3',
       'price' =>100,
       'price_type' => 'fixed',
       'sku' => 'any sku for 3',
       'sort_order' => '1'
    )

); }

// Supongamos que estamos creando un nuevo producto.

$product = Mage::getModel('catalog/product');
$product->setProductOptions(array($option));
$product->setCanSaveCustomOptions(true);

// O si estamos agregando las opciones a un producto ya creado.

$product = Mage::getModel('catalog/product')->load($id);
$product->setProductOptions(array($option));
$product->setCanSaveCustomOptions(true);

// No olvides guardar el producto

$product->save();
Matrix Infologics
fuente
Esta es una buena explicación sobre cómo crear por código opciones personalizadas para un producto, pero no creo que responda la pregunta. El OP le preguntó cómo puede establecer valores predeterminados para las opciones personalizadas.
Marius