Изящное ухудшение зависимости от модуля


Краткая предыстория: Мы используем стороннее расширение, поэтому отправляйте почту с помощью Mandrill. Это расширение выполняет это, переопределяя метод core/email_template::send(). Мне нужно внедрить фильтр электронной почты, чтобы остановить отправку всех электронных писем на определенные поддельные адреса электронной почты, что я бы сделал, также переопределив core/email_template::send(). Достаточно просто, я бы просто убедился, что мой модуль зависит от стороннего расширения, используя <depend> в конфигурации моего модуля.

Проблема: Если мы решаем деактивировать или удалить стороннее расширение Mandrill, мой модуль фильтрации электронной почты перестанет работать, поскольку он зависит от стороннего расширения. Я бы хотел, чтобы он продолжал работать без необходимости вносить в него какие-либо изменения.

Возможное решение: Удалите <depend> и порядок загрузки модуля magentos разрешит его.

Насколько я понимаю magento, модули загружаются в порядке core, community и последний local, а затем в алфавитном порядке внутри этих бассейнов? Поскольку стороннее расширение размещено в пуле сообщества, а мой модуль находится в локальном пуле, мой модуль всегда будет переопределяться, и все будет работать так, как ожидалось. Однако я не считаю, что это очень надежное решение. Если модули будут перемещены в другие пулы или переименованы, все может перестать работать правильно, и никто этого не заметит.

Author: Kim Westlund, 2015-03-30

1 answers

Как сказал Cags, вы можете выполнять различные расширения, например, вы можете поместить это в начало файла перезаписи и расширить перезапись с Custom_Modulename_Model_Email_Template_base

if (
    Mage::helper('core')->isModuleEnabled('module_name') &&
    Mage::getStoreConfig('modulename/general/enabled') 
) {
    class Custom_Modulename_Model_Email_Template_Base
        extends 3rdParty_Modulename_Email_Template
    {
    } 
} else {
    class Custom_Modulename_Model_Email_Template_Base
        extends Mage_Core_Model_Email_Template
    {
    } 
}
 1
Author: Martijn Schot, 2015-03-30 18:38:36