質問

ユーザーがカスタムオプションを選択したときに、製品ページの製品のSKUを動的に更新するにはどうすればよいですか?また、どのようにしてカートページに渡すことができますか?

例:SKU XXXの製品には、Y1、Y2およびZ1、Z2のオプションがある2つのカスタムオプションYとZがあります。ユーザーが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行目の場合は、以下に示すようにコードを追加/交換します。これにより、オプションIDをSKUサフィックスにマップし、製品ページで表示された製品SKUを変更するためにカスタムオプションを選択したときに使用できるJavaScriptアレイが提供されます。

<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 製品を取り、カスタムオプションを確認し、のSKUを変更します quote_item. 。 quote_item その後保存するので、コントローラー内で保存する必要はありません。

$quoteItem->setSku();

終わり。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top