刚花了几个小时看着这个。问题是,出于很好的理由,页面缓存不会加载页面布局,这意味着当页面缓存尝试重新加载此块的缓存时,Mage_Catalog_Block_Breadcrumbs - > _ prepareLayout()不会被调用。 _prepareLayout()是调用Mage_Page_Block_Html_Breadcrumbs之前什么加载痕迹 - > _ toHtml()
一个快速的方法来复制被保存到文件系统,具有全页面缓存的问题是:
- 转到一个产品或类别页面
- 刷新整个页面缓存
- 进入的/ 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();
}
}
您确定它是在刷新页面时发生的,并且它在登录时不会消失吗? –
请参阅此主题http://www.magentocommerce.com/boards/viewthread/49743/ –
页面刷新时,它们消失 –