2010-12-18 59 views

回答

0

您可能可以重写一个网格控制器,该网格控制器显示管理员该区域中的产品,并使用另一个字段向您显示产品图像。

+0

谢谢...我会在哪里找到的? – eugene 2010-12-20 18:49:55

+0

什么eugene,不用谢谢大流士杰出的答案? – Pete855217 2014-03-19 09:05:37

3

对于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.phpapp/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Crosssell.php

+0

感谢您提供优秀的技巧大流士。但是,不要编辑/ app/code/core /中的文件,而应该真的在/ app/code/local /中复制它们以防止升级破坏您的更改。 – clockworkgeek 2011-01-04 09:43:04

+0

优秀的描述和解决方案。竖起大拇指。 – James 2013-01-08 07:13:26

相关问题