2

3 つのオプションを持つラジオ ボタンのカスタム オプションがあります。たとえば、オプション 2 を選択すると、単純な JSalert()に、この選択に関するメッセージが表示されます。すべてではなく、1 つだけです。

私が見つけた問題は、JS で生成された ID とクラス名を持つすべての製品と互換性を持たせるために、私のコードがすべての製品で確実に機能するようにするために従うべきパターンがほとんどないことです。

その要素を探して で 2 番目の要素を取得するだけでそれを行うことができますがgetElementByTag()、今後数か月で認定に向かい、私の慣行が確実に維持されるようにしたいので、Magento に適した方法でそれを行う必要があります- 「回避」するのではなく、Magento と連携してください。

コード例 (Magento によってオンザフライで生成される ID、クラス、および名前)

<dd class="last">
    <ul id="options-54765-list" class="options-list">
        <li>
            <input type="radio" class="radio  validate-one-required-by-name product-custom-option" onclick="opConfig.reloadPrice()" name="options[54765]" id="options_54765_2" value="210674" />
            <span class="label"><label for="options_54765_2">Colour Edge </label></span>
            <script type="text/javascript">$('options_54765_2').advaiceContainer = 'options-54765-container';$('options_54765_2').callbackFunction = 'validateOptionsCallback';</script>
        </li>
        <li>
            <input type="radio" class="radio  validate-one-required-by-name product-custom-option" onclick="opConfig.reloadPrice()" name="options[54765]" id="options_54765_3" value="210673" />
            <span class="label"><label for="options_54765_3">Gallery Wrap </label></span>
            <script type="text/javascript">$('options_54765_3').advaiceContainer = 'options-54765-container';$('options_54765_3').callbackFunction = 'validateOptionsCallback';</script>
        </li>
        <li>
            <input type="radio" class="radio  validate-one-required-by-name product-custom-option" onclick="opConfig.reloadPrice()" name="options[54765]" id="options_54765_4" value="210672" />
            <span class="label"><label for="options_54765_4">White Edge </label></span>
            <script type="text/javascript">$('options_54765_4').advaiceContainer = 'options-54765-container';$('options_54765_4').callbackFunction = 'validateOptionsCallback';</script>
        </li>
    </ul>
</dd>
4

1 に答える 1

1

これを実現するには、その製品の [デザイン] タブで、次のようにカスタム ブロックを追加します。

<reference name="before_body_end">
    <block type="your_module/product" name="option.select.js" template="path/to/template.phtml" />
</reference>

新しいブロックで、 をつかみMage::registry('current_product');、 を呼び出しますgetProductOptions()。あらゆる基準に基づいてフィルタリングします。これを再利用する必要があるかどうかに応じてCatalog_Model_Product_Option_Value、データベースのテーブルに列を追加し、管理テンプレートを拡張して、ボックスをチェックするか、ドロップダウンを使用するか、テキストを入力するのが最善の方法です。ポップアップする確認を取得します。

次に、protected function _toHtml() {}関数で、確認ボックスの JS を出力します。

それが私がそれをする方法です。

于 2012-11-15T23:16:25.330 に答える