2010-12-18 85 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