Как сменить шаблон стандартного блока

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8886
  • Регистрация: 20.02.2010

13.08.2011 11:40

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

Самый простой - найти файл шаблона блока и исправить его.
Как правило, это самый дорогой для заказчика способ, потому что среди всех способов он максимально увеличивает заказчику стоимость сопровождения магазина.

Предпочтительный способ - установить для блока свой шаблон через макетные правила.
Для этого:


  • Объявите в config.xml вашего модуля ваш файл для макетных правил (если не описывали его ранее).

    Если вы переопределяете административный блок, то объявите ваш макет внутри тегов adminhtml:

    <adminhtml>
        <layout>
            <updates>
                <df_checkout>
                    <file>df_checkout.xml</file>
                </df_checkout>
            </df_checkout>
        </layout>
    </adminhtml>


    Если вы переопределяете витринный блок, то объявите ваш макет внутри тегов frontend:

    <frontend>
        <layout>
            <updates>
                <df_checkout>
                    <file>df_checkout.xml</file>
                </df_checkout>
            </df_checkout>
        </layout>
    </frontend>



  • Затем создайте макетный файл и поместите его в базовую папку с макетами.

    Для макетов административной части:
    app/design/adminhtml/default/default/layout/df_checkout.xml


    Для макетов витрины:
    app/design/frontend/base/default/layout/df_checkout.xml



  • Убедитесь, что система загружает ваш модуль после модуля, который создает блок, чей шаблон вы перекрываете.
    Чтобы ваш модуль загружался после другого модуля, используйте тег depends в описательном файле вашего модуля в папке app/etc/modules.
    Например:

    <config>
        <modules>
            <Df_Adminhtml>
                <active>true</active>
                <codePool>local</codePool>
                <depends>
                    <Df_Core/>
                    <Mage_Adminhtml/>
                </depends>
            </Df_Adminhtml>
        </modules>
    </config>



  • Определите дескрипторы той страницы или множества страниц, для которых вы зотите переопределить шаблон.
    Для определения дескрипторов удобно использовать модуль Alanstorm Layoutviewer.


  • Найдите блок, чей шаблон вы переопределяете, в стандартных макетных правилах, определите его имя (атрибут name).

    Например, у блока
    <block type="adminhtml/sales_order_create_items_grid" template="sales/order/create/items/grid.phtml" name="items_grid">

    именем будет items_grid


  • В макетном файле вашего модуля внутри требуемых дескрипторов сошлитесь на требуемый блок, используя тег reference.
    А затем установите нужный ваш шаблон вызовом метода setTemplate:

    <layout>
        <adminhtml_sales_order_create_index>
            <reference name='items_grid'>
                <action method="setTemplate">
                    <template>df/sales/order/create/items/grid.phtml</template>
                </action>
            </reference>
        </adminhtml_sales_order_create_index>
    </layout>


Поделиться темой: