【问题标题】:Add to Cart Button on CMS Page in Magento EE 1.13Magento EE 1.13 中 CMS 页面上的添加到购物车按钮
【发布时间】:2014-07-28 05:00:42
【问题描述】:

我正在尝试为我们公司创建一个在 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 帖子: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 美元的价格标签的目的,而这个功能被取消了。请帮忙,谢谢!

【问题讨论】:

    标签: magento magento-1.13


    【解决方案1】:

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

    {{block type="core/template" name="formkey" template="core/formkey.phtml"}}
    

    【讨论】:

      【解决方案2】:

      这将在 1.13 中起作用:

       <button onclick="location.href ='{{config path="web/unsecure/base_url"}}/checkout/cart/add?product=1&qty=1'">Add To Cart</button>
      

      【讨论】:

      • 如何解决添加到购物车按钮错误,justpaste.it/6fi1f 您的代码也不起作用。
      【解决方案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;
          //}
      

      现在可以使用静态链接了。

      【讨论】:

      • 这会削弱 Magento 的跨站点脚本安全实践,不应该这样做。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-09
      • 2014-08-30
      • 1970-01-01
      • 1970-01-01
      • 2014-09-27
      相关资源
      最近更新 更多