0

我正在尝试为我们公司创建一个在 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>

它既好又简单,让我们能够通过令人敬畏的登录页面真正吸引访问者,并且能够在不离开这个高度优化的页面的情况下将产品添加到购物车。

您可以在此处阅读有关旧方法的 StackOverflow 帖子:在 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 美元的价格标签的目的,而这个功能被取消了。请帮忙,谢谢!

4

3 回答 3

2

您需要包含该formkey块,然后使用 JavaScript 从<input />生成的标签中提取值并将其添加到您的链接 URL、AJAX 等。

{{block type="core/template" name="formkey" template="core/formkey.phtml"}}
于 2016-01-19T00:22:38.600 回答
0

这将在 1.13 中起作用:

 <button onclick="location.href ='{{config path="web/unsecure/base_url"}}/checkout/cart/add?product=1&qty=1'">Add To Cart</button>
于 2015-01-23T12:33:58.570 回答
-4

有一种方法可以修改 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;
    //}

现在可以使用静态链接。

于 2014-06-06T21:17:40.523 回答