0

Magento で既にカートに入っている構成可能な製品のオプションを (ドロップダウン選択を使用して) 更新する方法を教えてください。

次のファイルに、構成可能な製品のスーパー属性オプション (ドロップダウン リストを使用) を表示するコードを配置しますmagento\app\design\frontend\default\theme-name\template\checkout\cart\item\default.phtml

このコードの行を見つけました:

<?php if ($_options = $this->getOptionList()):?>

その後、構成可能な製品の属性ドロップダウン リストを表示するコードを配置し、正常に動作しましたが、スーパー属性ドロップダウン リストから別のオプションを選択したときに、その製品のスーパー属性オプション値を更新する必要があります。以下は、ドロップダウンを表示するための私のコードです。

<?php
if($this->getProduct()->isConfigurable()){
    $_product = Mage::getModel('catalog/product')->load($this->getProduct()->getId());
    Mage::getBlockSingleton('catalog/product_view_type_configurable')->unsetData();
    $_configurable = Mage::getBlockSingleton('catalog/product_view_type_configurable')->setData('product', $_product);
    $_cdata = json_decode($_configurable->getJsonConfig());
    $_current = array();
    foreach((array)$this->getOptionList() as $_option) {
        $_current[$_option['label']]=$_option['value'];
    }
    foreach($_cdata->attributes as $attribute) {
        ?>
        <strong><?php echo $attribute->label;
        $catchlabel = $attribute->label;
        if($catchlabel == 'Clipboard Color'):
            $SelectOptions = "selectAtt";
        else:
            $SelectOptions = "selectFont";
        endif;
        ?>
        </strong>
        <select style="width: 150px;"
name="cart[<?php echo $_item->getId() ?>][option][<?php echo $attribute->id ?>]"
id="<?php  echo $_item->getId(); ?>_<?php echo $attribute->id;  ?>"
class="<?php echo $SelectOptions; ?>">
            <?php
            foreach($attribute->options as $option) {
                ?>
                <option
                <?php echo ($_current[$attribute->label]==$option->label) ? ' selected' : '' ?>
                    value="<?php echo $option->id ?>">
                    <?php echo $option->label ?>

                </option>
                <?php
            }
            ?>
        </select> 
        <script type="text/javascript">
            jQuery('#<?php  echo $_item->getId(); ?>_<?php echo $attribute->id;  ?>').change(function() {
                var getOption = jQuery('#<?php  echo $_item->getId(); ?>_<?php echo $attribute->id;  ?>').val();
                // something to do here for update attibute options for current product
                alert(getOption);
            });
        </script> <?php
    }
}
?>

選択した構成可能製品のスーパー属性オプションを更新する方法を教えてください。

4

1 に答える 1

0

新しい構成情報を、更新を処理するコントローラーアクションに送信する必要があります。

Magentoにはそのようなコントローラーアクションはありませんが、カート内の1つの構成可能な製品を編集すると、わずかに異なるマークアップの製品ビューが表示されます。そのページのフォームは、新しい商品を追加する代わりに、カート内の商品を編集するために使用されます。

そのコントローラーアクションのアルゴリズムを確認し、カート内のすべての製品にそのアルゴリズムを適用するコントローラーを備えたモジュールを作成する必要があります

于 2012-07-16T12:14:15.620 に答える