Магазин Magento - Удалить блок с помощью обновления XML - PullRequest
2 голосов
/ 15 января 2010

Я использую этот код в файле шаблона для отображения статического блока на левой боковой панели:

<?= $this->getLayout()->createBlock('cms/block')->setBlockId('leftSB1')->toHtml() ?>

Я бы хотел исключить блок из одной из моих страниц CMS. Как мне это сделать?

Я думаю, что это требует добавления кода в раздел «Обновление макета XML», но я не уверен, что именно.

Ответы [ 2 ]

14 голосов
/ 15 января 2010

Кто-то другой может исправить меня здесь, но я вполне уверен, что у вас возникнут проблемы, пытаясь выполнить это, учитывая то, как вы называли блок. Обычные обновления макета позволяют удалять блоки, но это блоки, которые также были созданы с макетом (например, объект Layout узнает о них после вызова loadLayout ()).

В вашем случае вы создаете блок на лету, а затем сразу же используете его для отображения некоторого HTML. Если вы хотите удалить его с помощью обновлений макета, попробуйте сначала переместить его в файлы макета, а затем используйте обычный метод удаления блока макета:

<reference name="your_parent_block_name">
   <remove name="leftSB1"/>
</reference>

В противном случае вы можете скрыть это либо в PHP (установив некоторую глобальную переменную и проверив ее перед выводом блока. Плохая форма, но она может работать.), Либо в CSS. Дайте мне знать, если что-то из этого работает для вас.

Спасибо, Джо

6 голосов
/ 15 января 2010

Вместо этого включите блок в макет:

<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') на боковой панели, если вы не включаете детей автоматически.

(а затем удалить его с определенной страницы, как в предыдущем ответе)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...