В экземпляре Varien_Data_Form
вы можете указать пользовательские типы элементов, например:
$fieldset->addType('custom', 'Your_Module_Model_Form_Element_Custom');
Затем добавьте свой элемент с помощью
$fieldset->addField('the_name', 'custom', $optionsArray);
Если вы используете форму без наборов полей, вы можете сделать то же самое с экземпляром Varien_Data_Form
.
РЕДАКТИРОВАТЬ: Расширить ответ из-за новых дополнительных деталей в вопросе.
В классе Mage_Adminhtml_Block_Widget_Form::_setFieldset()
есть следующий код:
$rendererClass = $attribute->getFrontend()->getInputRendererClass();
if (!empty($rendererClass)) {
$fieldType = $inputType . '_' . $attribute->getAttributeCode();
$fieldset->addType($fieldType, $rendererClass);
}
Из-за этого атрибут frontend_input_renderer
в атрибутах может использоваться для указания пользовательских классов элементов.
Это свойство можно найти в таблице catalog_eav_attribute
, и, к счастью, оно не установлено ни для одного из атрибутов изображения категории.
Учитывая это, есть несколько способов применить настройку.
Один из вариантов - просто установить класс элемента в таблице, используя скрипт обновления.
Другим было бы использование наблюдателя для события eav_entity_attribute_load_after
и установка средства визуализации ввода на лету, если entity_type_id и тип ввода совпадают.
Так что это немного сложнее, чем просто переписывание обычного класса в Magento, но это вполне возможно.