2015-03-03 62 views
1

我使用的是帶有RWD主題的Magento 1.9.1.0,我想從cms /塊中顯示更多的菜單項(品牌,多種類型的鏈接)。我已經改變了template/page/html/topmenu/renderer.phtml文件和關閉</ul>後添加此:Magento cms/blocks沒有正確緩存

$identifier = str_replace(array(Mage::getBaseUrl(),'/'),array('','-'),$child->getUrl()); 
$html .= '<div class="brands">'; 
$html .= $this->getLayout()->createBlock('cms/block')->setBlockId('mainmenu_brands_'.$identifier)->toHtml(); 
$html .= '</div>'; 

那麼這段代碼是foreach()通過菜單項循環,並使得有可能每個菜單項後增加一些額外的鏈接內。

通常這應該在XML中,但cms /塊的標識符是動態的,所以我找不到更好/更好的解決方案。

一切工作完美,但..當我啓用緩存(BLOCK_HTML緩存)沒有出現!我已經做了一些故障排除並測試了一些東西。動態標識符是問題。當我使用靜態標識符時,它的工作非常完美,但這種方式在任何地方都有相同的鏈接。

如何讓這與緩存工作?

回答

1

問題是當啓用緩存時,Mage::getBaseUrl()返回的URL是?___SID=U。所以cms/block標識符有?___SID=U的加法。我已經禁用了「在前端使用SID」選項,請參閱:https://magento.stackexchange.com/a/59378/8013,現在它消失了,並且工作完美!我們只使用一個商店,因此可以禁用此選項。