Добавление миниатюрного изображения в «Сопутствующие товары» на серверную часть Magento - PullRequest
0 голосов
/ 18 декабря 2010

Когда я добавляю новый продукт в бэкэнд, меня просят выбрать «сопутствующие товары», «Up-sells» и «Cross-sells». Я хотел бы видеть миниатюрные изображения здесь на серверной части, поэтому я могу выбирать их быстро, а не пытаться выбирать их по имени / номеру.

Ответы [ 2 ]

3 голосов
/ 04 января 2011

Изображение рендерера не существует для сетки 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

0 голосов
/ 19 декабря 2010

Возможно, вы можете переопределить контроллер сетки, который отображает продукты в этой области администратора, с другим полем, которое показывает вам изображение продукта.

...