2014-09-11 2 views
1

Привет всем и спасибо за чтение, Я использую Magento с плагином, который проходитмодуль вопрос переопределения в Magento

ядро ​​/ магазин

с использованием модели

Plugin/Магазин

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

Plugin/магазин

модель моей пользовательской модели

Пользовательские/магазин

так скажите теперь, что все виды должны заканчиваться следующим образом:

Ядро/магазин ---- переопределены ---> Plugin/магазин ---- переопределены ---> Пользовательский/магазин

, но если я называю Mage::getModel('Core/Store');, я получаю экземпляр

Plugin/магазин

модель. это потому, что magento читает конфигурации модуля Core и обнаруживает, что модель Core/Store переопределена плагином/хранилищем, не проверяя, переопределен ли Plugin/Store какой-либо другой моделью (в моем случае это Custom/Store). это означает, что все Mage::getModel('Core/Store'); во всех магнито код не будет возвращать

на заказ/STORE

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

PS: в моем случае, даже после того, как переопределение Plugin/магазин на заказ/магазин:

1- вызов Mage::app() возвращает объект имеет _stores массив и все магазины в нем есть экземпляр/магазин Plugin.

2- the call `Mage::getModel('Plugin/Store');` will return Custom/Store instance 

3- вызов Mage::getModel('Core/Store'); будет возвращать плагин/магазин экземпляр

ответ

1

Зависимости между модулями

1) При расширении основного модуля Magento, зависимость между модулями необходимо настроить

, например. app/etc/modules/MyNamespace_Customer.xml:

<MyNamespace_Customer> 
    <active>true</active> 
    <codePool>local</codePool> 
    <priority>1</priority> 
    <depends> 
     <Mage_Customer/> 
    </depends> 
</MyNamespace_Customer> 

2) При создании SQL установки или установки данных в пользовательский модуль, который обновляет модуль ядра сущность Magento, зависимость должна быть создана

например инсталлятор в MyCustomModule:

$installer = $this; 
$installer->startSetup(); 

$sqlQuote = 'ALTER TABLE ' . $this->getTable('sales_flat_quote') . 
      ' ADD `is_urgent` TINYINT UNSIGNED NOT NULL DEFAULT 0'; 

$installer->run($sqlOrder); 
$installer->run($sqlQuote); 

$installer->endSetup(); 

например. dependency config (продажи цитата объект изменяется, зависимость с модулем «Sales» должно быть добавлено):

<MyNamespace_MyCustomModule> 
    <active>true</active> 
    <codePool>local</codePool> 
    <priority>1</priority> 
    <depends> 
     <Mage_Sales/> 
    </depends> 
</MyNamespace_MyCustomModule> 

3) Extending/Rewriting a file (model, helper, block, controller) из основного модуля Magento требует зависимость между модулями, в противном случае последняя измененная версия будет произвольным и вам потеряет контроль над переписыванием.

Зависимости модулей важны для определения приоритетов порядка SQL, а при новой установке они избегают конфликтов, сбоев или неправильных окончательных данных.

На основании выше вы можете определить свою зависимость между модулями Plugin/Store и Custom/Store.

+0

Благодарим Вас за содержательный ответ, но я добавил зависимость между новым пользовательского модуля и модуля плагина (например, ' ' в пользовательской конфигурации модуля) – rramiii

+0

Это должно пойти что-то вроде этого 'Plugin/Store' зависит от 'Core/Store' и' Custom/Store' зависит от 'Plugin/Store' – Slimshadddyyy

+0

, это именно то, что сейчас, но все равно такое же, как я объяснил в своем вопросе. – rramiii