当用户选择其自定义选项时,如何在产品页面上的产品页面上动态更新产品的SKU?另外,如何将其传递到购物车页面?

示例:具有SKU XXX的产品具有两个自定义选项Y和Z,它们具有Y1,Y2和Z1,Z2的选项。如果用户选择Y1和Z2,我想将页面上的SKU更改为XXX-Y1-Z2,然后将SKU传递给购物车。

谢谢。

有帮助吗?

解决方案

如果您在产品中添加自定义选项,则可以添加,例如下拉选项,如下所示。

enter image description here

在将产品添加到购物车并在购物车中取回Sku时选择选项 var_dump($_item->getSku()); 您可以看到Sku的产品已更改

enter image description here

现在用于动态更新产品页面上的SKU。为此,我们需要检索可以在文件中完成的选项值SKU app/design/frontend/[package]/[template]/template/catalog/product/view/options.phtml 例如。在这种情况下,在JavaScript之后的第190行周围,我们添加/替换了一些代码,如下所示。 This will give you a javascript array which you can use when a custom option is selected to map the option ID to the SKU suffix and changing the displayed product SKU on the product page.

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

其他提示

产品页面

将SKU添加到产品页面,添加几行JS,听 change<select> 并更改sku。

大车

实施观察者,听 checkout_cart_product_add_after 采用产品,检查自定义选项,然后更改 quote_item. 。这 quote_item 之后保存,因此无需将其保存在控制器中。

$quoteItem->setSku();

完毕。

许可以下: CC-BY-SA归因
scroll top