2013-01-17 40 views
0

我们目前正在使用Magento开发一个网站,无论出于何种原因,我们第一次查看分类页面时,面包屑已经存在,但是,如果我们刷新页面,面包屑消失。Magento面包屑在页面第一页后消失

任何想法,为什么这可能会发生,非常感谢!

谢谢!

杰夫

编辑/更新:我已经进入了breadcrumbs.phtml文件,并放置在$屑变量的var_dump,它返回NULL当面包屑都没有显示出来,为什么会变成可变NULL在页面刷新?

编辑/更新2:看起来整个页面缓存没有缓存面包屑

编辑/更新3:这绝对是一个完整的页面缓存的问题,当FPC被禁用,面包屑工作的每个页面加载

+0

您确定它是在刷新页面时发生的,并且它在登录时不会消失吗? –

+0

请参阅此主题http://www.magentocommerce.com/boards/viewthread/49743/ –

+0

页面刷新时,它们消失 –

回答

4

我对EE有同样的问题,它似乎与开发者模式打开连接。

我将index.php中的代码注释掉了,一切正常。

一些奇怪的原因,面包屑不缓存时,开发人员模式已打开,但随后向空的高速缓存中FPC

显示(这是什么),我所接触的Magento EE支持今天就这个问题。我会通过反馈进行更新,但我建议与此问题相关的其他人联系支持人员,因为这是一个开箱即用的问题。

+0

EE支持回复? –

0

您可能需要将以下行添加到您的temmplate文件 - 它可能就这么简单!

echo $this->getLayout()->getBlock('breadcrumbs')->toHtml(); 
+0

清除缓存后,面包屑立即工作,但是,当有人第二次访问该页面时,面包屑消失 –

+0

顺便说一句,我没有用你的线代替$ this-> getChildHtml('breadcrumbs')试试看,我还是得到了相同的结果 –

1

刚花了几个小时看着这个。问题是,出于很好的理由,页面缓存不会加载页面布局,这意味着当页面缓存尝试重新加载此块的缓存时,Mage_Catalog_Block_Breadcrumbs - > _ prepareLayout()不会被调用。 _prepareLayout()是调用Mage_Page_Block_Html_Breadcrumbs之前什么加载痕迹 - > _ toHtml()

一个快速的方法来复制被保存到文件系统,具有全页面缓存的问题是:

  1. 转到一个产品或类别页面
  2. 刷新整个页面缓存
  3. 进入的/ var/full_page_cache和搜索包含看起来像“%CONTAINER_BREADCRUMBS%”,并删除他们
两个文件的文件夹

这将要求页面缓存尝试重新加载该块。由于加载不调用Mage_Catalog_Block_Breadcrumbs - > _ prepareLayout(),因此对Mage_Page_Block_Html_Breadcrumbs - > _ toHtml()的调用将返回一个空字符串,新缓存文件为空,直到缓存完全清除并重新加载完整页面。

我提出的修复方案并不漂亮,但它似乎是最不具有侵入性的。只需为_prepareLayout()所做的_toHtml()方法创建一个块覆盖。

class Package_Module_Block_Html_Breadcrumbs extends Mage_Page_Block_Html_Breadcrumbs 
{ 
    protected function _toHtml() 
    { 
     if (!is_array($this->_crumbs)) { 
      $this->addCrumb('home', array(
       'label'=>Mage::helper('catalog')->__('Home'), 
       'title'=>Mage::helper('catalog')->__('Go to Home Page'), 
       'link'=>Mage::getBaseUrl() 
      )); 

      $path = Mage::helper('catalog')->getBreadcrumbPath(); 

      foreach ($path as $name => $breadcrumb) { 
       $this->addCrumb($name, $breadcrumb); 
      } 
     } 
     return parent::_toHtml(); 
    } 
} 
0

这是Magento EE版本中的一个已知错误。您可以查看此link寻求解决方案。

我们最近有这样的问题,但在我们的案例中,上面的文章中的代码已经添加到代码库中。通过简单地从cache.xml中删除它,面包屑开始按照它们应该的那样行事。奇怪的东西。