Question

Comment puis-je mettre à jour dynamiquement le sku d'un produit sur la page du produit lorsque les utilisateurs sélectionnent ses options personnalisées? En outre, comment pourrait-il alors passé dans la page du panier?

Exemple: Un produit avec sku XXX a deux options personnalisées Y et Z, ont les options de Y1, Y2 et Z1, Z2. Si Y1 et Z2 d'un utilisateur, je voudrais changer le sku sur la page XXX-Y1-Z2 et passer que sku au panier.

Merci.

Était-ce utile?

La solution

Si vous ajoutez des options personnalisées à un produit que vous pouvez ajouter, par exemple pour les options déroulant, un produit suffixe sku comme indiqué ci-dessous.

entrer image description ici

Le choix d'une option lors de l'ajout du produit au panier et récupérer le SKU dans le panier var_dump($_item->getSku()); vous pouvez voir les produits UGS a été modifiée

entrer image description ici

pour mettre à jour dynamiquement la SKU sur la page du produit. Pour cela, nous aurons besoin de récupérer pour les valeurs des options SKU qui peut être fait dans le fichier app/design/frontend/[package]/[template]/template/catalog/product/view/options.phtml par exemple. Dans ce cas, autour de la ligne 190 après le javascript nous ajoutons / remplacer un code comme indiqué ci-dessous. Cela vous donnera un tableau javascript que vous pouvez utiliser lorsqu'une option personnalisée est sélectionnée pour mapper l'ID d'option pour le suffixe SKU et changer le produit affiché SKU sur la page du produit.

<dl>
    <?php $options_to_sku = array();?>

    <?php foreach($_options as $_option): ?>
        <?php echo $this->getOptionHtml($_option) ?>
<?php
if ($_option->getType() == 'drop_down')
{
    $options_to_sku["{$_option->getId()}"] = array();
    foreach ($_option->getValues() as $k => $v) 
    {
        $options_to_sku["{$_option->getId()}"]["{$v->getData('option_type_id')}"] = $v->getData('sku');
    }
}
?>
    <?php endforeach; ?>
    </dl>
    <script type="text/javascript">
        var options_to_sku = <?php echo json_encode($options_to_sku);?>;

        $$('.product-custom-option').each(function(elm) {
            $(elm).observe('change', function() {
                var sku_suffix = '';
                $$('.product-custom-option').each(function(opt) {
                    if ($(opt).value.length==0) // no value selected
                        return;

                    var opt_id = $(opt).readAttribute('id').replace('select_','');

                    if (!!!options_to_sku[opt_id]) // no option values array found
                        return;

                    if (!!!options_to_sku[opt_id][$(opt).value]) // no sku found matching value id
                        return;

                    sku_suffix += '-' + options_to_sku[opt_id][$(opt).value]; // add to suffix
                });

                /**
                 * add here the code that adds the suffix to your SKU
                 */
                console.log(sku_suffix);
            });
        });
    </script>

Autres conseils

Page Produit

Ajouter sku à la page du produit, ajoutez quelques lignes de JS, écouter sur change sur le <select> et changer le sku.

Panier

Mettre en œuvre un observateur, écouter checkout_cart_product_add_after prendre le produit, vérifiez les options personnalisées et changer le sku du quote_item. Le quote_item est sauvé par la suite, donc pas besoin de l'enregistrer à l'intérieur du contrôleur.

$quoteItem->setSku();

Fait.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top