Domanda

Come posso aggiornare dinamicamente la SKU di un prodotto sulla pagina del prodotto quando gli utenti selezionano le sue opzioni personalizzate? Inoltre, come potrebbe quindi essere passato nella pagina del carrello?

Esempio: Un prodotto con SKU XXX ha due opzioni personalizzate Y e Z, che hanno le opzioni di Y1, Y2 e Z1, Z2. Se un utente seleziona Y1 e Z2, mi piacerebbe cambiare lo sku sulla pagina per XXX-Y1-Z2 e passare che sku al carrello.

Grazie.

È stato utile?

Soluzione

Se si aggiunge un opzioni personalizzate a un prodotto è possibile aggiungere, ad esempio per le opzioni a discesa, un prodotto SKU suffisso come illustrato di seguito.

entrare descrizione dell'immagine qui

Su scegliendo un'opzione quando si aggiunge il prodotto al carrello e il recupero della SKU nel carrello var_dump($_item->getSku()); è possibile vedere i prodotti SKU è stata modificata

entrare descrizione dell'immagine qui

Ora, per aggiornare in modo dinamico la SKU sulla pagina del prodotto. Per questo abbiamo bisogno di recuperare i valori SKU che può essere fatto nel file app/design/frontend/[package]/[template]/template/catalog/product/view/options.phtml ad esempio di opzione. In questo caso attorno alla riga 190 dopo il javascript aggiungiamo / sostituire il codice come illustrato di seguito. Questo vi darà un array JavaScript che può essere utilizzato quando un opzione personalizzata è selezionata per mappare l'ID opzione per il suffisso SKU e la modifica del prodotto esposto SKU sulla pagina del prodotto.

<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>

Altri suggerimenti

Scheda Prodotto

Aggiungi lo sku alla pagina del prodotto, aggiungere un paio di righe di JS, ascolto sulla change sul <select> e cambiare lo sku.

Carrello

Implementare un osservatore, ascoltare checkout_cart_product_add_after prendere il prodotto, controllare le opzioni personalizzate e cambiare lo sku del quote_item. Il quote_item viene salvata in seguito, quindi non è necessario salvarlo all'interno del controller.

$quoteItem->setSku();

Fatto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top