Я посмотрел в классе загрузки, и не похоже, что есть чистое решение. Соответствующий код загрузки имени класса:
if (isset($this->_classNameCache[$groupRootNode][$group][$class])) {
return $this->_classNameCache[$groupRootNode][$group][$class];
}
...
if (isset($config->rewrite->$class)) {
$className = (string)$config->rewrite->$class;
Так что, похоже, нет такой вещи, как переписано-переписано. Тот, который помещается в массив конфигурации, является тем, который загружается, и после кэширования он просто возвращается в соответствии с запросом. Я тоже не вижу простого способа взломать кеш. Вы могли бы попытаться получить приоритет для вашего модуля (я полагаю, переименовав его в алфавитном порядке), но это полный взлом и, скорее всего, загадочно провалится позже. Это убивает возможности конфигурации.
Также неприятно: похоже, что Magento запрашивает эту сетку только в двух местах, в пределах Mage_Adminhtml_Block_Catalog_Product
(которую вы можете легко переопределить), но также и в Mage_Adminhtml_Catalog_ProductController
(черт!). В зависимости от вашего варианта использования рассмотрите возможность переопределения блока продукта каталога и замены функции _prepareLayout()
на вашу собственную. Если вы также хотите переопределить контроллер, вам нужно создать свой собственный контроллер (который начинается с Mage_Adminhtml_Catalog_ProductController
) и определить перезапись в вашей конфигурации, чтобы направить admin/catalog/product/grid
к вашему действию. Боль, но, по крайней мере, достигает своей цели.
Надеюсь, это поможет,
Джо