Layout 具有两个或多个StoreView的XML布局中的Magento静态CMS块
我有两个名为“promo_en”和“promo_de”的静态CMS块,它们被翻译成两个现有的StoreView“en”和“de” 我想使用模块的layout.xml文件将它们添加到一些模块的侧栏中 问题是,如果我使用以下语法添加它们,它们都显示出忽略了我当前所在的storeview(我希望进行一些自动筛选):Layout 具有两个或多个StoreView的XML布局中的Magento静态CMS块,layout,magento,content-management-system,block,cache-control,Layout,Magento,Content Management System,Block,Cache Control,我有两个名为“promo_en”和“promo_de”的静态CMS块,它们被翻译成两个现有的StoreView“en”和“de” 我想使用模块的layout.xml文件将它们添加到一些模块的侧栏中 问题是,如果我使用以下语法添加它们,它们都显示出忽略了我当前所在的storeview(我希望进行一些自动筛选): 促销 宣传片 如果我将它们都重命名为“promo”,并使用以下语法-在激活Magento的缓存之前,它可以正常工作-那么CMS块的输出将冻结在最先缓存的storeview上: <
促销
宣传片
如果我将它们都重命名为“promo”,并使用以下语法-在激活Magento的缓存之前,它可以正常工作-那么CMS块的输出将冻结在最先缓存的storeview上:
<block type="cms/block" name="Promo">
<action method="setBlockId"><block_id>promo</block_id></action>
</block>
宣传片
对此,我们非常赞赏您的想法或解决方法。作为一种粗略的解决方法,您可以针对每家商店使用。比如,
<STORE_de>
<reference name="left">
<block type="cms/block" name="Promo_de">
<action method="setBlockId"><block_id>promo_de</block_id></action>
</block>
</reference>
</STORE_de>
<STORE_en>
<reference name="left">
<block type="cms/block" name="Promo_en">
<action method="setBlockId"><block_id>promo_en</block_id></action>
</block>
</reference>
</STORE_en>
促销
宣传片
我最终编写了自己的小模块来快速解决问题,根据当前商店代码切换代码中的翻译:
if( Mage::app()->getStore()->getCode() == 'de' )
{
echo $this->getLayout()->createBlock('cms/block')->setBlockId('promo_de')->toHtml();
}
else if( Mage::app()->getStore()->getCode() == 'en' )
{
echo $this->getLayout()->createBlock('cms/block')->setBlockId('promo_en')->toHtml();
}
我知道这很难看,但时间确实是一个问题,我必须在将来清理它…为什么不创建具有相同标识符的静态块,然后只在相应的存储视图中启用它们
<block type="cms/block" name="Promo">
<action method="setBlockId"><block_id>promo</block_id></action>
</block>
宣传片
然后使用标识符promo创建2个静态块,并仅在它们所属的storeview中启用它们?或者是否至少有某种方法可以使用XML语法禁用此块的缓存?在我看来,关于这个主题的Magento文档几乎是不存在的……你能用主题优先文件做到这一点吗?按照法国的说法,,演示商店的德语和英语主题视图?Matthew建议的解决方案在语义上更为正确。我认为主题覆盖值得更深入地寻找一个更持久的解决方案,但我找不到快速教程,客户希望它完成…谢谢-我很喜欢使用这种方式,因为它只是一个简单的解决方案的快速修复客户希望在某些模块上使用促销框-但不幸的是,magento忽略了布局手柄。。。不知道为什么…干净的方式似乎是马修建议的主题-在使用此解决方案之前,您应该先看看它,它只不过是一个快速修复。。。
<block type="cms/block" name="Promo">
<action method="setBlockId"><block_id>promo</block_id></action>
</block>