Как отключить оператор удаления из local.xml в Magento - PullRequest
6 голосов
/ 13 декабря 2010

Можно ли отключить оператор <remove name="left">, определенный в файле XML макета по умолчанию, из файла local.xml?

Например, в файле checkout.xml в разделе <checkout_cart_index>,оператор <remove name="left"/> определен там, но вы можете отключить эту строку из файла local.xml, чтобы вы все еще видели левое меню на странице оформления заказа?

Ответы [ 5 ]

12 голосов
/ 03 января 2011

По умолчанию Magento не предоставляет тег <unremove /> для local.xml.Однако система Layout содержит правильные события, так что вы можете реализовать это самостоятельно.И под "собой" я имею в виду, что создал экспериментальное расширение , которое добавляет такой тег.Обратная связь приветствуется.

5 голосов
/ 07 октября 2011

Я делаю это двумя способами:

  1. Используйте превосходный плагин Alan Storm для удаления, приведенный выше.

  2. Повторно вставьте удаленный блок в local.xml с новым атрибутом имени, но с тем же псевдонимом или атрибутом «как».

Атрибут name должен быть другим, потому что Magento <remove name="foo" /> является глобальным - он удаляет все экземпляры <block name="foo" />, даже если они добавляются после инструкции удаления. Чтобы добавить левый столбец, например,

<reference name="root">
  <block name="left.2" as="left" type="core/text_list">
  <!-- New left column is empty, so you'll need to add your left-column blocks into it here. -->
  </block>
</reference>

name = "left.2" означает, что действие удаления не убьет этот блок, а = "left" означает, что он все равно будет вставлен в ваш шаблон с помощью <?php echo $this->getChildHtml('left') ?>.

К сожалению, ваш недавно вставленный левый столбец пуст. Таким образом, вам придется заново вставить туда любые блоки, которые вы хотите показать. Думаю, сделать плагин Alan Storm еще более полезным.

2 голосов
/ 13 декабря 2010

Когда блок удален, он не уничтожается, только игнорируется.Возможно, вы сможете «включить» его с помощью:

<checkout_cart_index>
    <reference name="root">
        <action method="append"><block>left</block></action>
    </reference>
</checkout_cart_index>

Я никогда не использовал это сам и не хотел бы, если вы создаете собственную тему, то скопируйте файлы основного макета иредактируйте их напрямую, как рекомендуют другие ответы.

1 голос
/ 13 декабря 2010

Ваш ответ не в том, чтобы отключить удаление, а в том, чтобы добавить его снова в ваш local.xml

0 голосов
/ 13 декабря 2010

Вместо того, чтобы пытаться восстановить весь набор блоков, прокомментируйте удаление внутри исходного XML. Это будет меньше проблем с обслуживанием, чем попытка восстановления блоков и беспокойство о приоритете файлов XML и т. Д.

Преврати это

<remove name="left" />

В

<!-- disabling remove because X -->
<!-- <remove name="left" /> -->
...