5

構成可能な製品のオプションを、ドロップダウン リストではなく、ユーザーがオプションをクリックして選択できるように、内部に "a" を含む div として表示する必要があります。メニューのように (目標は靴のサイズを表示することです)。

多くの人が知っているように、Magento は Json レスポンスを使用してドロップダウン メニューのオプションを埋めます。(var spConfig = new Product.Config(getJsonConfig() ?>) であり、クラスは js/varien/product.js (Product.Config = Class.create() ) にあります。

次に、ファイル template/catalog/product/view/type/options/configurable.phtml を編集して、元の動作を次のように置き換えました。

'<?php
     echo ' 
                <ul class="super-attribute-select">';
         $resultado = json_decode($this->getJsonConfig(), true);
         $atributo=$resultado['attributes'][162]['options'];
         foreach($atributo as $att){
             echo '<li>';
             echo '<a value="'.$att['id'].'" price="'.$att['price'].'" href="javascript:void()" onclick="return assignValue()">'.$att['label'].'</a>';
             echo '</li>';
             }
     echo ' </ul>
            <div class="clear"></div>';
     ?>'

このシンプルな mod を使用すると、メニューを div で形成された小さなグリッドに置き換えることができます。現在、ネイティブの動作をエミュレートする Javascript 関数を作成しようとしていますが、選択されたオプション (この場合は靴のサイズ) のみを対象としています。フォームでオプション値を送信するコードを理解しているので、非表示の入力を作成し、ユーザーがクリックを実行したときにJavascript関数を介して値を割り当てるという考えでした。

'<script>
  function assignValue(value){
   //assign the value       
      document.getElementById('super_attribute[162]').value = value;
   //mod the class of the selected item
      this.addClassName("selected");
</script>'

関数を作成するか、magento が既に値を必要とするメソッドを呼び出す必要があると思います。非表示の入力にクラス「required-entry」を設定するのが良い考えであるかどうかはわかりません。

私を手伝ってくれますか?どんな種類の助けや他のアイデアも高く評価されます。

4

1 に答える 1

0

ここにコードスニペットがあります。単純すぎる =) !!..

    <script type="text/javascript">
        function assignValue(idattribute,price,value){
            var sal = new String(value); //this value is what you are showing to the user in the div grid
            var disp = new String(idattribute);

            $('nameinputhidden').value=disp;
            $('advice-required-entry-attribute').fade();
                    $$('.nameinputhidden').each(
                     function(e){
                   e.removeClassName('active');
                      }
                      )
                    $(sal).addClassName('active');

    </script>

入力値を非表示として取得することを忘れないでください。この入力値は、グリッドに表示している属性でなければなりません。

お役に立てれば。私があなたを助けることができるなら、とにかく私に知らせてください!

よろしく!

于 2013-04-22T22:45:39.283 に答える