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