Изображение рендерера не существует для сетки adminhtml. Вы должны переопределить это.
Редактировать файл app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Related.php
рядом с линией 140, под этим кодом:
$this->addColumn('entity_id', array(
'header' => Mage::helper('catalog')->__('ID'),
'sortable' => true,
'width' => 60,
'index' => 'entity_id'
));
Вставьте этот код:
$this->addColumn('image', array(
'header'=> Mage::helper('catalog')->__('Image'),
'type' => 'image',
'width' => '60px',
'index' => 'image',
));
Редактировать файл app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column.php
строка 271, добавьте этот код для переопределения рендерера:
case 'image':
$rendererClass = 'adminhtml/widget_grid_column_renderer_image';
break;
и рядом строка 348 добавить (для фильтра):
case 'image':
$filterClass = 'adminhtml/widget_grid_column_filter_image';
break;
Теперь вы должны создать файл app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer/Image.php
(если не существует) с этим кодом содержимого:
<?php class Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Image extends
Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract {
protected static $showImagesUrl = null;
protected static $showByDefault = null;
protected static $width = null;
protected static $height = null;
public function __construct() {
if(self::$showImagesUrl == null)
self::$showImagesUrl = 1;
if(self::$showByDefault == null)
self::$showByDefault = 1;
if(self::$width == null)
self::$width = '60px';
if(self::$height == null)
self::$height = '60px';
}
/**
* Renders grid column
*
* @param Varien_Object $row
* @return string
*/
public function render(Varien_Object $row) {
return $this->_getValue($row);
}
/*
public function renderProperty(Varien_Object $row) {
$val = $row->getData($this->getColumn()->getIndex());
$val = Mage::helper('imagebyurl')->getImageUrl($val);
$out = parent::renderProperty(). ' onclick="showImage('.$val.')" ';
return $out;
}
*/
protected function _getValue(Varien_Object $row) {
//$row->getEntityId();
$dored = false;
if ($getter = $this->getColumn()->getGetter()) {
$val = $row->$getter();
}
$val = $val2 = $row->getData($this->getColumn()->getIndex());
$val = str_replace("no_selection", "", $val);
$val2 = str_replace("no_selection", "", $val2);
$url = Mage::helper('adminhtml')->getImageUrl($val);
if(!Mage::helper('adminhtml')->getFileExists($val)) {
$dored =true;
$val .= "[!]";
}
if(strpos($val, "placeholder/")) {
$dored = true;
}
$filename = substr($val2, strrpos($val2, "/")+1,
strlen($val2)-strrpos($val2, "/")-1);
$_url = $url;
//echo $_SERVER['SERVER_NAME'];
if(!self::$showImagesUrl) $filename = '';
if($dored) {
$val = "<span style=\"color:red\" id=\"img\">$filename</span>";
}
else {
$val = "<span style=\"color:#888;\">". $filename ."</span>";
}
if(empty($val2) ) {
$out = "<center>" . $this->__("(no image)") . "</center>";
}
else {
$out = $val. '<center><a href="'.$_url.'" target="_blank"
id="imageurl">';
}
if(self::$showByDefault && !empty($val2) ) {
$out .= "<img src=". $url ." width='60px' ";
$out .=" />";
}
$out .= '</a></center>';
return $out;
}
}
(Вы можете заменить width=60px
на любую ширину или добавить высоту)
Теперь вы должны создать файл app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Filter/Image.php
(если не существует) с этим кодом содержимого:
<?php class Mage_Adminhtml_Block_Widget_Grid_Column_Filter_Image extends Mage_Adminhtml_Block_Widget_Grid_Column_Filter_Text { }
Не забудьте обновить кеш.
Теперь вы должны увидеть столбец изображения в соответствующей сетке.
Вы можете сделать то же самое для app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Upsell.php
и app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Crosssell.php