Могу ли я сделать основной модуль зависимым от пользовательского модуля?


Я подключаюсь к событию catalog_block_product_list_collection, чтобы добавить дополнительные параметры сортировки в коллекцию. Однако класс Mage_Review_Model_Observer также прослушивает это событие. Наблюдаемая функция catalogBlockProductCollectionBeforeToHtml загружает коллекцию продуктов и не позволяет мне вносить дополнительные изменения. Поскольку этот наблюдатель находится внутри ядра, он всегда срабатывает первым.

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

Я открыт и для других подходов к решению этой проблемы; я не видел других соответствующих событий, которые можно было бы связать.

Author: Ryre, 2014-03-19

2 answers

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

Предположим, что вашим модулем является Yoursite_Yourmodule. Затем используйте следующий код в расположении app/etc/Yoursite_Yourmodule.xml

<config>
    <modules>
        <Yoursite_Yourmodule>
            <active>true</active>
            <codePool>local</codePool>
        </Yoursite_Yourmodule>
        <Mage_Review>
            <depends>
                <Yoursite_Yourmodule />
            </depends>
        </Mage_Review>
     </modules>
</config>

Что делает этот код, так это то, что модуль Mage_Review будет зависеть от вашего модуля, и, следовательно, ваш модуль будет загружаться раньше, чем основной модуль. Это заставит вашего наблюдателя сначала прислушаться.

Я думаю, что это может решить вашу проблему.

 8
Author: Rajeev K Tomy, 2014-03-19 17:57:02

Как отмечает programmer_rkt, зависимости являются одним из способов обработки порядка обработки наблюдателей, влияя на порядок, в котором объединяются файлы конфигурации.

Другой стратегией было бы взять загруженную коллекцию продуктов, сбросить ее и перенести на нее порядок сортировки:

$coll->clear()->unshiftOrder(/*your params*/);
 2
Author: benmarks, 2014-03-19 18:56:02