0

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

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

谢谢!

杰夫

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

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

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

4

4 回答 4

4

我对 EE 也有同样的问题,它似乎与打开的开发人员模式有关。

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

出于某种奇怪的原因,当开发者模式打开时,面包屑不会缓存,但随后会拉出空缓存以在 FPC 中显示(这没什么)

我今天就这个问题联系了 Magento EE 支持。我会根据反馈进行更新,但我建议其他有此问题的人联系支持人员,因为这是一个开箱即用的问题。

于 2013-02-12T13:01:34.927 回答
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() 的调用返回一个空字符串,并且新的缓存文件为空,直到缓存被完全清除并重新加载整个页面。

我为此提出的解决方案并不漂亮,但它似乎是侵入性最小的。只需为 _toHtml() 方法创建一个块覆盖,该方法执行 _prepareLayout() 所做的工作。

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();
    }
}
于 2013-05-06T19:49:09.947 回答
0

您可能必须将以下行添加到您的模板文件中 - 它可能就这么简单!

  echo $this->getLayout()->getBlock('breadcrumbs')->toHtml();
于 2013-01-17T17:55:46.233 回答
0

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

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

于 2014-08-13T09:12:46.917 回答