Magento Store - 使用Update XML删除阻止

a1a*_*anm 2 magento

我在模板文件中使用此代码在左侧边栏中显示静态块:

<?= $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中.如果其中任何一项对您有用,请告诉我.

谢谢,乔


Gre*_*reg 6

改为在布局中包含块:

<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')在侧边栏中,如果你没有自动包括孩子.

(然后将其从特定页面中删除,如上一个答案中所示)