понедельник, 12 сентября 2011 г.

Переопределени блока кастомного модуля

Чтобы переопрелелить поведение блока кастомного модуля необходимо.

  1. Создать модуль
  2. Переопределить блок своим блоком.

Итак приступим.
Для начала создадим в папке app/etc/modules xml файл с объявлением нашего модуля. Файл будет называться MyNameSpase_Blog.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <MyNameSpase_Blog>
            <!-- Add this to easy revriew block in module config xml -->
            <depends><AW_Sarp /></depends>
            <active>true</active>
            <codePool>local</codePool>
        </MyNameSpase_Blog>
    </modules>
</config>
Обратите внимание на строку с тегами depends. Мы добавляем ее для более простого обращения к модулю в config.xml нашего модуля. Так же это дает нам уверенность в том, что наш модуль будет загружен после модуля AW_Sarp. Теперь переместимся в config.xml нашего модуля. Он должен находится в app/code/local/MyNameSpase/Blog/etc. Вот его содержимое
<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <MyNameSpase_Blog>
            <version>0.1.0</version>
        </MyNameSpase_Blog>
    </modules>
    <global>
        <blocks>
            <blog>MyNameSpase_Blog_Block</blog>
            <sarp>
                <rewrite>
                    <customer_subscription_list>MyNameSpase_Blog_Block_Customer_Subscription_List</customer_subscription_list>
                </rewrite>
            </sarp>
        </blocks>
    </global>
</config>
Мы собираемся переопределить блок AW_Sarp_Customer_Subscription_List на наш MyNameSpase_Blog_Block_Customer_Subscription_List, который должен лежать в app/code/local/MyNameSpase/Blog/Block/Customer/Subscription/List.php. Как видите из-за того, что мы указали
<depends><aw_sarp/></depends>
нам нет необходимости обращаться к блоку указывая его модуль.
Happy coding!