剛花了幾個小時看着這個。問題是,出於很好的理由,頁面緩存不會加載頁面佈局,這意味着當頁面緩存嘗試重新加載此塊的緩存時,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/ –
頁面刷新時,它們消失 –