Я постараюсь предоставить как можно больше контекста.
Я пытался переопределить Mage_GoogleShopping_Model_Attribute_Link
в течение 2 дней, но я не могу заставить Magento забрать мою версию файла.
Mage_GoogleShopping_Model_Attribute_Link
класс находится в приложении / коде / ядре / Маге / GoogleShopping / Модель / Атрибут / Link.php
Я поместил свой класс Safoo_Froogle_GoogleShopping_Model_Attribute_Link
в / app / code / local / Safoo / Froogle / GoogleShopping / Model / Attribute / Link.php
Тогда мой config.xml :
<global>
...
<models>
<safoofroogle>
<class>Safoo_Froogle_Model</class>
</safoofroogle>
<googleshopping>
<rewrite>
<attribute_link>Safoo_Froogle_GoogleShopping_Model_Attribute_Link</attribute_link>
</rewrite>
</googleshopping>
</models>
<helpers>
<googleshopping>
<rewrite>
<price>Safoo_Froogle_GoogleShopping_Helper_Price</price>
</rewrite>
</googleshopping>
</helpers>
(Обратите внимание, что переписывание помощника выше работает отлично.)
Я отладил вызов модели Link в Mage_GoogleShopping_Model_Type::_createAttribute
protected function _createAttribute($name)
{
$modelName = 'googleshopping/attribute_' . $this->_prepareModelName($name);
$useDefault = false;
###LOGGING###
Mage::log($modelName);
Mage::log(get_class(Mage::getModel($modelName) ));
###LOGGING###
try {
$attributeModel = Mage::getModel($modelName);
$useDefault = !$attributeModel;
} catch (Exception $e) {
$useDefault = true;
}
if ($useDefault) {
$attributeModel = Mage::getModel('googleshopping/attribute_default');
}
$attributeModel->setName($name);
return $attributeModel;
}
И это результат двух операторов журнала:
2011-11-01T06:57:17+00:00 DEBUG (7): googleshopping/attribute_Link
2011-11-01T06:57:17+00:00 DEBUG (7): Mage_GoogleShopping_Model_Attribute_Link
Так что Mage::getModel('googleshopping/attribute_Link')
все еще загружается Mage_GoogleShopping_Model_Attribute_Link
.
Единственный способ переопределить класс - скопировать файл Link.php в соответствующий каталог local
: app / code / local / Mage / GoogleShopping / Model / Attribute /Link.php, но хотел этого избежать.
Просто не работает. My Helper Overload работает. И я подумал, что смогу переопределить этот класс, как показано здесь:
http://www.magentocommerce.com/boards/viewthread/222046
http://www.magentocommerce.com/boards/viewthread/35787/
Есть идеи?