2

我有一个带有 3 个选项的单选按钮自定义选项。例如,在选择选项 2 时,我希望一个简单的 JSalert()弹出有关此选择的消息,而不是所有选项,只有一个。

我发现的问题是,为了使其与所有具有 JS 生成的 ID 和类名的产品兼容,因此几乎没有什么模式可以遵循以确保我的代码适用于所有产品。

我可以通过仅寻找该元素并使用 获得第二个元素来做到这一点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 回答