2013-01-17 68 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中刪除它,麪包屑開始按照它們應該的那樣行事。奇怪的東西。