Создайте собственный наблюдатель, стреляющий перед существующим наблюдателем Magento - PullRequest
4 голосов
/ 27 июля 2011

Можно ли сделать так, чтобы наблюдатель, которого вы заказали, имел более высокий приоритет, чем наблюдатель Magento, который запускает одно и то же событие.Моя проблема в том, что я изменяю вывод блока Welcome, но PageCache для предприятия запускается при том же событии corecore_block_abstract_to_html_after.

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

<core_block_abstract_to_html_after>
                <observers>
                    <modify_welcome>
                        <type>singleton</type>
                        <class>groupname_page/observer</class>
                        <method>changeWelcomeText</method>
                    </modify_welcome>
                    <enterprise_pagecache>
                        <class>enterprise_pagecache/observer</class>
                        <method>renderBlockPlaceholder</method>
                    </enterprise_pagecache>
                </observers>
 </core_block_abstract_to_html_after>

Ответы [ 3 ]

6 голосов
/ 11 марта 2012

/ приложение / и т.д. / модули / Groupname_Page.xml

<config>
    <modules>
        <Groupname_Page>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <!-- Your dependencies go here -->
            </depends>
        </Groupname_Page>
        <Enterprise_PageCache>
            <depends>
                <Groupname_Page />
            </depends>
        </Enterprise_PageCache>
    </modules>
</config>
0 голосов
/ 11 марта 2012

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

В файле config.xml вашего модуля:

        <core_block_abstract_to_html_after>
            <observers>
                <modify_welcome>
                    <type>singleton</type>
                    <class>groupname_page/observer</class>
                    <method>changeWelcomeText</method>
                </modify_welcome>
                <enterprise_pagecache>
                    <type>disabled</type>
                </enterprise_pagecache>
            </observers>
        </core_block_abstract_to_html_after>

А у тебя Observer.php:

    public function changeWelcomeText(Varien_Event_Observer $observer)
    {
        //do the stuff you want your observer to do first
        //and after it's done, call the Enterprise observer's method
        Mage::getSingleton('enterprise_pagecache/observer')->renderBlockPlaceholder($observer);
    }

НТН

0 голосов
/ 27 июля 2011

Нет способа контролировать порядок наблюдателей.Если вы посмотрите на метод Mage_Core_Model_App::dispatchEvent(), вы увидите, как Magento получает всех наблюдателей за данным событием из файлов config.xml и запускает их один за другим.

Перезапись блока Welcome поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...