0

我正在编写一个隐藏添加到购物车按钮和价格(产品视图)的模块,并在其位置(基于产品属性)显示一个简短的表单(联系我们之类的东西)。

因为有一个表格包含了产品视图页面上的大部分重要信息,所以我不能简单地用自己的表格注入我自己的 phtml 文件,因为那样会留下嵌套的表格。所以现在看起来我必须用我自己的覆盖整个目录/产品/view.phtml 文件才能更改表单操作。像这样:

<catalog_product_view>
    <reference name="product.info">
        <action method="setTemplate">
            <template>mycompany/mymodule/catalog/product/view.phtml</template>
        </action>
    </reference>    
</catalog_product_view>

然后在我的视图文件中,我相应地更改表单操作。

$formAction = $this->getSubmitUrl($_product);
if($_product->getData("myattribute")){
    $formAction = $this->getBaseUrl().'mycontroller/';
}

<form action="<?php echo $formAction ?>" ...[snip]

这似乎只是为了改变表单动作而过度杀伤力。

我看到它的方式有两个选择:

1) 将一些 javascript 添加到我的提交按钮 onclick 事件中,该事件将默认表单操作更改为转到我的控制器。这种方式劫持添加到购物车表单。(但如果禁用 javascript,这将有问题)

2)有一个观察者检查每个添加到购物车事件,看看它是否需要添加到购物车或应该处理我的表单。(如果需要,表格将显示在产品页面上)

(目前我没有考虑与自定义主题等集成......我只想一次解决一件事!-好吧,也许一只眼睛关注自定义主题......)

谁能提出更好或更有效的方法来实现这一目标?或者如果不是,您会推荐哪个选项,1 还是 2?

谢谢

4

1 回答 1

0

在我看来,大规模的过度杀伤方法听起来是最好的方法。你得到了你想要的表单动作变化,它看起来对 Magento 友好。

如果您真的不想这样做,那么我建议您使用选项二。当他们访问您的网站时,您不想依赖启用 Javascript 的整个互联网(禁用此功能的人的总体百分比将非常小,但他们可能是您身边的一个巨大的刺)。

于 2012-05-03T10:21:49.753 回答