我正在尝试为Magento Enterprise Edition 1.13上运行的公司创建登录页面。我们在登录页面使用CMS页面,过去我们可以直接在CMS页面上创建自定义的“添加到购物车”按钮。实际上非常简单,我们将创建一个按钮并将按钮发送到此URL端点:
<button class="button btn-cart" title="Add to Cart" onclick="setLocation('/n/magento/checkout/cart/add/product/644/qty/1')" type="button"><span><span>Add to Cart</span></span></button>
这很简单,让我们真正吸引访问者使用了很棒的目标网页,并且无需离开这个高度优化的页面即可将产品添加到购物车。
您可以在此处阅读有关OLD方式的StackOverflow帖子:Placing "Add to cart" button on homepage in Magento
然而,根据Magento自己的说法,这在Magento EE 1.13中不再有效。
我联系了我们的Magento支持并向我解释说语法已经改变,现在要求您将安全哈希放在URL中。这对我来说似乎是一个安全问题,所以我质疑它。然后我回应说,添加了安全漏洞,以防止开发人员不再使用它而不损害他们的网站。基本上他们不鼓励使用这个。他们说:
我的开发人员指出,通过直接URL将产品添加到购物车的功能并不是Magento中的预期功能,因此添加form_key值意味着阻止其进一步使用升级到1.13。
所以我的问题是,如果somoene想要在CMS页面上创建“添加到购物车”按钮,以便添加产品而无需将某人发送到产品页面(他们将不再在那里)在我们优化的目标网页上),我将如何进行此操作?
Magento 1.13中是否有办法将产品添加到购物车中,并带有可以放置在CMS页面内的自定义HTML中的自定义按钮?可以使用静态块或小部件来完成吗?我们真的依赖这个功能,现在正在质疑Magento EE每年18,000美元的价格,这个功能被剥夺了。请帮忙,谢谢!
答案 0 :(得分:2)
您希望包含formkey
块,然后使用JavaScript从生成的<input />
标记中提取值,并将其添加到您的链接网址,AJAX等。
{{block type="core/template" name="formkey" template="core/formkey.phtml"}}
答案 1 :(得分:0)
这将在1.13中起作用:
<button onclick="location.href ='{{config path="web/unsecure/base_url"}}/checkout/cart/add?product=1&qty=1'">Add To Cart</button>
答案 2 :(得分:-3)
有一种方法可以修改magento代码,以便在没有表单密钥的情况下将产品添加到购物车。
我会发布解决方案,但无论如何我想提醒您,删除表单密钥验证会对您的客户进行CSRF攻击!
你需要编辑app \ code \ core \ Mage \ Checkout \ controllers \ CartController.php
查找下一段代码:
public function addAction()
{
if (!$this->_validateFormKey()) {
$this->_goBack();
return;
}
评论此功能的前3行:
public function addAction()
{
//if (!$this->_validateFormKey()) {
// $this->_goBack();
// return;
//}
现在可以使用静态链接。