Magento: как обновить только параметр блока с помощью XML Layout Update - PullRequest
2 голосов
/ 22 апреля 2011

У меня есть дескриптор catalog_category_default, который имеет ссылку на содержимое, например:

    <reference name="content">
        <block type="catalog/category_view" name="category.products" template="catalog/category/view.phtml">
            <block type="catalog/product_list" name="product_list" template="catalog/product/list.phtml">
                <block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
                    <block type="page/html_pager" name="product_list_toolbar_pager"/>
                    <!-- The following code shows how to set your own pager increments -->
                        <action method="setDefaultDirection"><string>desc</string></action>
                        <action method="setDefaultListPerPage"><limit>10</limit></action>
                        <action method="setDefaultGridPerPage"><limit>9</limit></action>
                        <action method="addPagerLimit"><mode>list</mode><limit>10</limit></action>
                        <action method="addPagerLimit"><mode>list</mode><limit>20</limit></action>
                        <action method="addPagerLimit"><mode>list</mode><limit>30</limit></action>
                        <action method="addPagerLimit" translate="label"><mode>list</mode><limit>all</limit><label>All</label></action>
                        <action method="addPagerLimit"><mode>grid</mode><limit>12</limit></action>
                        <action method="addPagerLimit"><mode>grid</mode><limit>30</limit></action>
                        <action method="addPagerLimit"><mode>grid</mode><limit>60</limit></action>
                        <action method="addPagerLimit" translate="label"><mode>grid</mode><limit>all</limit><label>All</label></action>
                </block>
                <action method="addColumnCountLayoutDepend"><layout>empty</layout><count>6</count></action>
                <action method="addColumnCountLayoutDepend"><layout>one_column</layout><count>5</count></action>
                <action method="addColumnCountLayoutDepend"><layout>two_columns_left</layout><count>4</count></action>
                <action method="addColumnCountLayoutDepend"><layout>two_columns_right</layout><count>4</count></action>
                <action method="addColumnCountLayoutDepend"><layout>three_columns</layout><count>3</count></action>
                <!--action method="setColumnCount"><count>4</count></action-->
                <action method="setToolbarBlockName"><name>product_list_toolbar</name></action>
            </block>
        </block>
    </reference>

Я хочу обновить его обновлением макета из бэкэнда magento, чтобы загрузить другой шаблон, поэтому строка

<block type="catalog/product_list" name="product_list" template="catalog/product/list.phtml">

должно стать

<block type="catalog/product_list" name="product_list" template="catalog/product/other-list.phtml">

Я думаю, что есть лучшее решение, чем удалить ссылку на контент и создать новую.
Как мне обновить только этот параметр?

1 Ответ

5 голосов
/ 23 апреля 2011

В обновлении макета просто добавьте это:

<reference name="product_list">
    <action method="setTemplate"><name>catalog/product/other-list.phtml</name></action>
</reference>

Это возможно, потому что Magento отдает все свои блоки (и модели, и объекты) магическим сеттерам.

...