Magento Override Model Mage_Catalog_Model_Product_Attribute_Backend_Media

时间:2013-01-24 08:31:36

标签: magento model override

我使用magento 1.7,我尝试覆盖模型Model Mage_Catalog_Model_Product_Attribute_Backend_Media,但这不起作用。

我的课程:

class Mycompany_Mymodule_Model_Catalog_Product_Attribute_Backend_Media extends Mage_Catalog_Model_Product_Attribute_Backend_Media

我的配置:

... 
<model>
       <catalog>
            <rewrite>        <product_attribute_backend_media>Mycompany_Mymodule_Model_Catalog_Product_Attribute_Backend_Media</product_attribute_backend_media>
            </rewrite>
        </catalog>
    </model>

你能帮助我吗?

THX

1 个答案:

答案 0 :(得分:1)

您根本不需要重写任何核心文件。

您需要做的是创建1个新文件:

  [Namespace]/[Module]/Block/[Adminhtml]/template/grid/renderer/Image.php

对于Image.php

      class [Namespace]_[Module]_Block_[Adminhtml]_Template_Grid_Renderer_Image extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Action {

  public function render(Varien_Object $row)
{
    return $this->_getValue($row);
}
public function _getValue(Varien_Object $row)
{
    if ($getter = $this->getColumn()->getGetter()) {
        $val = $row->$getter();
    }
    $val = $row->getData($this->getColumn()->getIndex());
    $val = str_replace("no_selection", "", $val);
    $url = Mage::getBaseUrl('media') . DS . $val;

    $out = $val. '<center><a href="'.$_url.'" target="_blank" id="imageurl">';
    $out .= "<img src=". $url ." width='60px' ";
    $out .=" />";
    $out .= '</a></center>';

    return $out;

}
  }

根据需要更改函数中的代码以进入文件夹,并进行错误检查。

对于Grid.php,将以下内容添加到您的某个addColumns中,如下所示

        $this->addColumn('image1', array(
        'header' => Mage::helper('attributeimages')->__('Image 1'),
        'align' => 'left',
        'index' => 'image1',
        'renderer' => '[module]/[adminhtml]_template_grid_renderer_image',));

注意'渲染器'选项!

自定义