我在模板文件中使用此代码在左侧边栏中显示静态块:
<?= $this->getLayout()->createBlock('cms/block')->setBlockId('leftSB1')->toHtml() ?>
我想从我的一个CMS页面中排除该块。我该怎么做?
我认为它需要在“布局更新XML”部分添加代码,但我不确定究竟是什么。
答案 0 :(得分:14)
其他人可以在这里纠正我,但我很确定你会因为你打电话给这个区块而试图完成这个。正常的布局更新允许您删除块,但这些块也是使用布局创建的块(例如,在调用loadLayout()之后,Layout对象知道它们)。
在您的情况下,您可以动态创建块,然后立即使用它来回显一些HTML。如果您希望能够使用布局更新删除它,请先尝试将其移动到布局文件中,然后使用常规布局块删除方法:
<reference name="your_parent_block_name">
<remove name="leftSB1"/>
</reference>
否则,你可以在PHP中隐藏它(通过设置一些全局变量并在输出块之前检查它。形式不好但可能有用。)或者在CSS中。如果其中任何一项适合您,请告诉我。
谢谢, 乔
答案 1 :(得分:6)
在您的布局中包含该块:
<cms_page>
<reference name="left">
<block type="cms/block" name="leftSB1">
<action method="setBlockId"><id>leftSB1</id></action>
</block>
</reference>
</cms_page>
如果您没有自动包含儿童,请在侧边栏中$this->getChildHtml('leftSB1')
。
(然后将其从特定页面中删除,如上一个答案中所述)