我试图向Magento CMS块显示一个主页页脚区域,我使用下面的代码
$routeName = Mage::app()->getRequest()->getRouteName();
$identifier = Mage::getSingleton('cms/page')->getIdentifier();
if($routeName == 'cms' && $identifier == 'home') {
echo $this->getLayout()->createBlock('cms/block')->setBlockId('footer_seo')->toHtml();
}
当我禁用缓存时,此代码工作正常,但在启用缓存后,它会显示在所有页面上,有时不会显示在任何页面上。
我在堆栈溢出上尝试了一些解决方案,但那些没有用,我的Magento版本是1.9.2.4
任何人都知道如何解决此问题
答案 0 :(得分:1)
您应该使用布局句柄有条件地将块添加到布局(可能来自您的主题local.xml
):
<cms_index_index>
<reference name="footer">
<block type="cms/block" name="footer.seo">
<action method="setBlockId"><value>footer_seo</value></action>
</block>
</reference>
</cms_index_index>
如果您没有local.xml
,请不要忘记用上面的代码包装
<?xml version="1.0"?>
<layout version="0.1.0">
... layout handle code...
</layout>
之后,您所要做的就是在页脚模板中输出您的块:
echo $this->getChildHtml('footer.seo');
这样您就可以避免模板中的黑客检查。
祝你好运。
答案 1 :(得分:0)
我解决了在引用标记内部使用动作标记从页脚中删除遗留物
这看起来像是Magento 1.9版本上的一个已知错误,感谢大家特别帮助我MladenIlić
<reference name="footer">
<action method="setCacheLifetime"></action>
<block type="cms/block" name="footer.seo">
<action method="setBlockId"><value>footer_seo</value></action>
</block>
</reference>