Magento cms / blocks没有正确缓存

时间:2015-03-03 09:53:02

标签: php magento caching

我正在使用带有RWD主题的Magento 1.9.1.0,我想从cms / block中显示更多菜单项(品牌,多种类型的链接)。我已更改了template/page/html/topmenu/renderer.phtml文件,并在结束</ul>后添加了此文件:

$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的标识符是动态的,所以我找不到更好/更好的解决方案。

一切都运行得很好,但是..当我启用缓存(BLOCK_HTML缓存)时,什么都没有出现!我做了一些故障排除并测试了一些东西。动态标识符是问题所在。当我使用静态标识符时,它工作得很好,但这样我到处都有相同的链接。

如何使用缓存?

1 个答案:

答案 0 :(得分:1)

问题在于,当启用缓存时,Mage::getBaseUrl()正在使用?___SID=U返回网址。因此cms / block标识符添加了?___SID=U。我已禁用“在前端使用SID”选项,请参阅:https://magento.stackexchange.com/a/59378/8013现在它已经消失并且工作正常!我们只使用一个商店,因此可以禁用此选项。