état par défaut de l'option personnalisée pour les produits simples

11

J'ai une série de produits avec des options personnalisées de type case à cocher. Cependant, je ne peux pas définir à partir de la configuration du produit l'état par défaut de cette option particulière.

J'ai besoin qu'au moins une des cases à cocher (options) soit cochée par défaut lorsque l'utilisateur entre dans la page du produit / ajoute au panier à partir de la page de catégorie.

Est-ce faisable à partir de l'administration Magento ou cela nécessitera-t-il un développement supplémentaire (si oui, comment cela peut-il être fait)?

Mike
la source
Vous ne pouvez pas définir "est par défaut" sous Catalogue -> Gérer les attributs -> "Votre attribut" -> Gérer l'étiquette / les options -> juste à côté de votre option par défaut .... ou si vous utilisez le type d'entrée "oui / non" vous peut définir la valeur par défaut sous les propriétés d'attribut
Stefan Gregori
En fait, les options sont actuellement configurées avec des "Options personnalisées" à partir de la page du produit dans admin. Votre suggestion est de transformer cela en attributs de produit? Garderait-il le même comportement pour le prix du produit?
Mike

Réponses:

16

Je ne sais pas si recommander une extension compte comme une réponse valide (pour une question avec une prime) mais quelqu'un prétend ici qu'il a écrit une extension qui fait exactement ce dont vous avez besoin. L'extension peut être téléchargée ici . Je ne l'ai pas testé mais, dès que je le ferai, je posterai et mettrai à jour. Je n'ai regardé que le code et il y en a beaucoup. J'ai perdu intérêt après 2 fichiers. J'espère que ça marche pour vous.

[EDIT]
J'ai retrouvé mon intérêt. J'ai testé l'extension sur et cela fonctionne (presque).
Si vous l'utilisez avec le mode développeur activé, vous obtiendrez des erreurs. Voici ce que vous devez changer pour que cela fonctionne.
à la /app/code/local/Magebuzz/Customoption/controllers/Adminhtml/CustomoptionController.phpligne 28, il y a ceci:

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

Cela montre un avertissement «index non défini». Pour l'éviter, enveloppez-le dans une ifdéclaration.

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

À la /app/code/local/Magebuzz/Customoption/Block/Adminhtml/Customoption/Edit/Tab/Form.phpligne 129, il y a ceci:

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

$values peut être nul alors changez le code en ceci:

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

Maintenant ça devrait marcher.
Maintenant un examen.

  1. PRO . Fonctionne parfaitement pour les options personnalisées déroulantes et radio
  2. Neurtal . Type de travaux pour plusieurs options personnalisées de sélection et de case à cocher. Vous ne pouvez sélectionner qu'une seule valeur pour les valeurs disponibles.
  3. Inconvénient mais je peux l'oublier. Afin de définir les valeurs par défaut, vous devez cliquer sur un autre élément de menu dans le backend et rechercher votre produit dans la liste.
  4. Con . Il ne fonctionne pas pour le texte, la zone de texte, la date, l'heure, l'heure, les options personnalisées de fichier. Mais avec un peu de travail, il peut être modifié pour fonctionner correctement pour tous les types (peut-être à l'exception du fichier).
Marius
la source
1

Pas par défaut dans Magento.

Peut être réalisé de cette façon. Mieux vaut reprendre avant de continuer.

$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'
    )

); }

// Supposons que nous créons un nouveau produit.

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

// Ou si nous ajoutons les options à un produit déjà créé.

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

// N'oubliez pas de sauvegarder le produit

$product->save();
Matrix Infologics
la source
C'est une belle explication sur la façon de créer des options personnalisées par code pour un produit, mais je ne pense pas que cela réponde à la question. L'OP a demandé comment définir les valeurs par défaut des options personnalisées.
Marius