Mise à jour produit sku avec des options douanières skus sur les pages produits et panier
-
16-10-2019 - |
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.
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.
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
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.