Magento cms/blocks 缓存不正确
Magento cms/blocks not cached correctly
我正在使用带有 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 的标识符是动态的,所以我找不到 better/nicer 解决方案。
一切正常,但是..当我启用缓存(BLOCK_HTML
缓存)时什么也没有出现!我已经完成了一些故障排除并测试了一些东西。动态标识符是问题所在。当我使用静态标识符时,它工作得很好,但那样我到处都有相同的链接。
如何使用缓存使其工作?
问题是启用缓存后,Mage::getBaseUrl()
返回 URL 和 ?___SID=U
。所以 cms/block 标识符有 ?___SID=U
添加。我已经禁用了 "Use SID on Frontend" 选项,请参阅:https://magento.stackexchange.com/a/59378/8013 现在它已经消失并且运行良好!我们只使用一个商店,因此可以禁用此选项。
我正在使用带有 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 的标识符是动态的,所以我找不到 better/nicer 解决方案。
一切正常,但是..当我启用缓存(BLOCK_HTML
缓存)时什么也没有出现!我已经完成了一些故障排除并测试了一些东西。动态标识符是问题所在。当我使用静态标识符时,它工作得很好,但那样我到处都有相同的链接。
如何使用缓存使其工作?
问题是启用缓存后,Mage::getBaseUrl()
返回 URL 和 ?___SID=U
。所以 cms/block 标识符有 ?___SID=U
添加。我已经禁用了 "Use SID on Frontend" 选项,请参阅:https://magento.stackexchange.com/a/59378/8013 现在它已经消失并且运行良好!我们只使用一个商店,因此可以禁用此选项。