Magento Custom Option上的JS警报单击

时间:2012-11-15 13:33:45

标签: javascript magento prototypejs

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

我发现的问题是,为了使它与所有产品兼容,他们使用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>

1 个答案:

答案 0 :(得分: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作为确认框。

我就是这样做的。