【问题标题】:Magento cms/blocks not cached correctlyMagento cms/blocks 未正确缓存
【发布时间】:2015-03-04 17:55:34
【问题描述】:

我正在使用带有 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 缓存)时,什么也没有出现!我做了一些故障排除并测试了一些东西。动态标识符是问题所在。当我使用静态标识符时,它工作得很好,但这样我到处都有相同的链接。

如何使用缓存?

【问题讨论】:

    标签: php magento caching


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-28
      • 1970-01-01
      • 2015-11-04
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      相关资源
      最近更新 更多