2

我正在使用 Magento Shopper 主题 ( http://shopper.queldorei.com/ )。

当我将产品添加到我的购物车时,它会添加多个元素

<div class="cart-top-title">
<a href="https://droppinstudio.dk/horsepony/index.php/checkout/cart/" class="clearfix">
<span class="icon"></span>Cart</a></div>

我发现是 jQuery 在这里犯了错误:

function setLocationAjax(url, id)
{
   ...
       if (data.status != 'ERROR' && $('.cart-top-container').length) {
          $('.cart-top-container').replaceWith(data.cart_top);
       }   
   ...
}

有没有人知道如何解决这个问题?

4

2 回答 2

2

您应该查看 CartController,并更改响应变量 (data.cart_top)。

CartController 的位置取决于主题使用的模块。核心 CartController 位于 app/code/core/Mage/Checkout/controllers/CartController.php 中。

希望这可以帮助。

于 2012-12-12T16:46:24.313 回答
1

谢谢欧文,这帮助我弄清楚出了什么问题

CartController 位于 app/code/local/Excellence/Ajax/controllers/ 中,实际上名为 IndexController.php。

第 52-54 行设置 data.cart_top 响应:

$sidebar_header = $this->getLayout()->getBlock('cart_top')->toHtml();
Mage::register('referrer_url', $this->_getRefererUrl());
$response['cart_top'] = $sidebar_header;

解决方法可能是更改cart_top块的设计方式,从 cart_top.phtml 中删除“cart-top-title”,并将其放入自己的文件中,并将其包含在 header.phtml 中。

结果发现实际替换发生在 ajaxcart.js(函数 setLocationAjax)的第 85 行。

对我来说,一个快速的解决方法是使用 jQuery 删除 div,如下所示:

if (data.status != 'ERROR' && $('.cart-top-container').length) {
  $('.cart-top-title').remove();
  $('.cart-top-container').replaceWith(data.cart_top);
}

js文件在这里:skin/frontend/default/shopper/js/ajaxcart/ajaxcart.js

cart_top.phtml 这里:app/design/frontend/default/shopper/template/checkout/cart/cart-top.phtml

header.phtml 这里:app/design/frontend/default/shopper/template/page/html/header.phtml

于 2012-12-14T11:12:22.617 回答