首次查看页面后,Magento面包屑消失

时间:2013-01-17 17:18:35

标签: magento magento-1.7

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

非常感谢任何关于为什么会发生这种情况的想法!

谢谢!

杰夫

编辑/更新:我已经进入了breadcrumbs.phtml文件并在$ crumbs变量上放置了一个var_dump,当面包屑没有显示时它返回NULL,为什么变量在页面刷新时变为NULL?

编辑/更新2:整页缓存似乎没有缓存面包屑

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

4 个答案:

答案 0 :(得分:4)

我对EE有同样的问题,它似乎已连接到正在开启的开发者模式。

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

由于一些奇怪的原因,当开发者模式打开时,面包屑不会缓存,但是然后拉出空缓存以在FPC中显示(什么都不是)

我今天就此问题与Magento EE支持部门联系。我会更新反馈,但我建议其他任何人与此问题联系支持,因为这是一个开箱即用的问题。

答案 1 :(得分:1)

花了几个小时研究这个。问题是,由于充分的理由,页面缓存不会加载页面布局,这意味着当页面缓存尝试重新加载此块的缓存时,不会调用Mage_Catalog_Block_Breadcrumbs-> _prepareLayout()。 _prepareLayout()是在调用Mage_Page_Block_Html_Breadcrumbs-> _toHtml()

之前加载面包屑的原因

使用保存到文件系统的完整页面缓存来复制问题的快速方法是:

  1. 转到产品或类别页面
  2. 刷新整页缓存
  3. 进入/ var / full_page_cache并搜索包含两个看起来像“%CONTAINER_BREADCRUMBS%”的文件并删除它们的文件夹
  4. 这将要求页面缓存尝试仅重新加载该块。由于加载不调用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();
        }
    }
    

答案 2 :(得分:0)

您可能需要将以下行添加到模板文件中 - 它可能就像那样简单!

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

答案 3 :(得分:0)

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

我们最近遇到过这样的问题,但在我们的案例中,上面文章中的代码已添加到代码库中。通过简单地删除它(从cache.xml),面包屑开始表现得如此。奇怪的东西。