2012-08-01 102 views
4

我有一些问题,在我的车(#)“的标题和缓存。Magento TopLink缓存我的购物车(#)

我正在使用Magento Enterprise 1.12。问题是,当我添加或删除某些项目到标题中的某个项目时,我有“我的车(#)”,并且每次添加或删除项目时都不更新,因为缓存和我不知道怎么解决呢?

步骤:

1)从管理

2清洁缓存)进入首页(在标题中出现 “我的购物车”)

3 )去一些产品页面

4)添加一些产品到购物车

5)重定向到我的购物车页面(在标题中出现“我的购物车(1项)”)

6)回到首页再次(在头仍出现“我的购物车”)没有“1项”

如果我去管理网站和主页上的清理缓存出现“我的购物车(1项)”。当我有一个项目,然后从购物车中删除该项目时,我遇到同样的问题。

我需要是动态的黑色,我不知道该怎么做。

Tnks for reading! :)

+0

看起来像显示您的购物车的区块可能像页脚一样被缓存(不适用于动态内容)。尝试将它移动到其他地方,看看它是否给你相同的问题(我假设你使用自定义主题) – pzirkind 2015-08-16 18:39:01

+0

你使用FPC(全页缓存)吗? – Rabea 2015-08-28 15:45:05

+0

尝试禁用FPC或[为此特定块禁用缓存](http://magento.stackexchange.com/questions/3124/how-can-i-disable-cache-for-particular-section-or-block) 。 – 2015-11-18 16:41:33

回答

0

好的,这里可能有很多问题,但也许一个体面的方式来调试这个问题将重写JavaScript的Minicart方法,看看它跳到哪里。

在你的模块的layout.xml文件中添加自定义脚本by following this post

接下来,Minicart.prototype有很多功能,的console.log(Minicart.prototype);来查看它们。

我冒险猜测updateItem方法出了问题。通过在您的JS文件中添加以下内容来覆盖此内容:

if (typeof Minicart != "undefined") { 
    Minicart.prototype.updateItem = function(el) { 
     var cart = this; 
     var input = $j(this.selectors.quantityInputPrefix + $j(el).data('item-id')); 
     var quantity = parseInt(input.val(), 10); 
     cart.hideMessage(); 
     cart.showOverlay(); 
     $j.ajax({ 
      type: 'POST', 
      dataType: 'json', 
      url: input.data('link'), 
      data: {qty: quantity, form_key: cart.formKey} 
     }).done(function(result) { 
      cart.hideOverlay(); 
      if (result.success) { 
       cart.updateCartQty(result.qty); 
       if (quantity !== 0) { 
        cart.updateContentOnUpdate(result); 
       } else { 
        cart.updateContentOnRemove(result, input.closest('li')); 
       } 
      } else { 
       cart.showMessage(result); 
      } 
     }).error(function() { 
      cart.hideOverlay(); 
      cart.showError(cart.defaultErrorMessage); 
     }); 
     return false; 
    }; 
} 

并开始注销失败的部分。如果这不是导致错误,请尝试另一种方法。

快乐编码!