Файл макета Magento local.xml - переопределение - PullRequest
4 голосов
/ 30 декабря 2010

Есть ли способ переопределить или повторно добавить что-то, что было удалено через его XML-макет, используя local.xml?

Я создал тему, основанную на одном макете страницы, 2columns-оставил.Но многие страницы, такие как карта сайта, настроены на использование макета 1column.Так, например, в catalog.xml у нас есть:

<catalog_seo_sitemap translate="label">
    <label>Catalog Seo Sitemap (Common)</label>
    <remove name="right"/>
    <remove name="left"/>

    <reference name="root">
        <action method="setTemplate"><template>page/1column.phtml</template></action>
    </reference>
    <reference name="content">
        <block type="page/template_container" name="seo.sitemap.container" template="catalog/seo/sitemap/container.phtml">
            <block type="page/template_links" name="seo.sitemap.links" as="links" template="page/template/links.phtml"/>
            <block type="page/html_pager" name="seo.sitemap.pager.top" as="pager_top" template="page/html/pager.phtml"/>
            <block type="page/html_pager" name="seo.sitemap.pager.bottom" as="pager_bottom" template="page/html/pager.phtml"/>
        </block>
    </reference>
</catalog_seo_sitemap>

И в моем local.xml я могу переопределить корневой шаблон для использования, добавив:

<catalog_seo_sitemap>
<reference name="root">
    <action method="setTemplate"><template>page/2columns-left.phtml</template></action>
</reference>
</catalog_seo_sitemap>

Так что этотеперь показываю карту сайта в 2 колонке слева.Но в левом столбце ничего нет, так как удалил его.Ненавижу, что мне нужно переопределить весь этот catalog.xml просто для того, чтобы удалить его, так как это неприятно, когда они обновляются до новой версии, мне нужно обновить и все эти дополнительные файлы макетов.

Итак,Есть ли способ исправить это, используя мой local.xml?Я думаю, что для стандартных тем Magento у них должно быть все настроено для использования макета 3column, так как вы можете удалить все, что вам не нужно, но все это по умолчанию, так что все изменения могут быть сделаны вфайл local.xml.

Ответы [ 3 ]

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

Из коробки невозможно удалить блок макета, который был удален предыдущим вызовом <remove />. «

Однако в системе макетов достаточно событий, чтобы вы могли реализовать это самостоятельно. И под «собой» я имею в виду, что создал экспериментальное расширение , которое добавляет тег <unremove /> к грамматике системы XML Layout.

5 голосов
/ 30 декабря 2010

Это было задано до , но заключение не было достигнуто.Вы можете создать замещающий блок в вашем local.xml, но нет гарантии, что добавленные к нему дочерние блоки будут выполнены, поэтому после ваших локальных изменений.

<catalog_seo_sitemap>
    <reference name="root">
        <action method="setTemplate"><template>page/2columns-left.phtml</template></action>

        <block type="core/text_list" name="left" as="left" translate="label">
            <label>Left Column</label>
        </block> <!-- Copied from page.xml -->

        <block type="core/text_list" name="right" as="right" translate="label">
            <label>Right Column</label>
        </block> <!-- Copied from page.xml -->
    </reference>
</catalog_seo_sitemap>
0 голосов
/ 21 декабря 2015

Мне удалось сделать это, просто изменив имя блока при его чтении.Кажется, что если вы удалите блок и повторно добавите его с тем же именем, метка удаления будет применена ко всем блокам с одинаковым именем.В моем случае это было удаление навигации по аккаунту и добавление в шапку.

<remove name="customer_account_navigation" />  

<block type="customer/account_navigation" name="customer_account_nav" as="accountNavigation" template="customer/account/navigation.phtml">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...