文章彙整

Magento自訂欄位內資料顯示的方式與搜尋

By Astral Web 9 months agoNo Comments
首頁  /  Magento  /  Magento開發  /  Magento自訂欄位內資料顯示的方式與搜尋

上一章中我們講到如何自訂自己的後台欄位,但是有時顯示出來的資料並不是我們需要的,例如圖片路徑。這一章將講述如何改變欄位顯示的方式與搜尋。

 

 

Magento後台欄位顯示的方式-以圖片顯示

 

路徑:app\code\local\Mage\Adminhtml\Block\Catalog\Product\Grid.php

請在我們上一次新增的 →(回顧:如何在Magento後台列表頁「自訂欄位」

 

<?php
$this->addColumn('small_image',array( 
.... 
 'renderer' => 'Mage_Adminhtml_Block_Catalog_Renderer_Product_Image', //新增 
.....
));

 

我們可以用這個,把我們出來的值再一次的修改,讓它符合我們的需求。

 

 

新增 app\code\local\Mage\Adminhtml\Block\Catalog\Renderer\Product\Image.php,注意大小寫

<?php
class Mage_Adminhtml_Block_Catalog_Renderer_Product_Image extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{
    public function render(Varien_Object $row) {
        return 'test';
    }
}

 

然後重整我們的產品頁,你可以看到裡面的直到被改為 test了。

接下來改變 function render ,讓它以圖片輸出

<?php
class Mage_Adminhtml_Block_Catalog_Renderer_Product_Image extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{

    public function render(Varien_Object $row) {
        if($row->getSmallImage() != '' && $row->getSmallImage() != "no_selection"){
          return "<img src='".Mage::helper('catalog/image')->init($row,'small_image')->keepFrame(true)->resize(100,100)."' >";
        }else{
          return 'no_selection';
        }
        return $row->getSmallImage();
    }
}

 

 

保存修改,你就會看到產品的以圖片顯示

Magento後台欄位自訂搜尋

接下來是如何自訂搜尋,從上圖你可以看到標題image的下面有一個輸入框,我們可以在那邊填入要搜尋的值,但是假設我們今天只想搜尋檔名,而不是整條路徑就必須自訂搜尋得方式。

路徑:app\code\local\Mage\Adminhtml\Block\Catalog\Product\Grid.php

 

新增設定

$this->addColumn('small_image',array(
 .... 
 'filter_condition_callback' => array($this, '_callbackImageFilter'), //新增 
.....
));

 

在同檔案新增 function

protected function _callbackImageFilter($collection, $column){
        if (!$value = $column->getFilter()->getValue()) {
            return null;
 }

 

   // 我們有使用到 MySQL函數,所以使用 addExpressionAttributeToSelect ,另外如非EAV欄位,請替換為 addExpressionFieldToSelect。

 

$collection->addExpressionAttributeToSelect(
            'file_name',
            "substring_index({{small_image}},'/',-1)",
            'small_image'
        );
$collection->addFieldToFilter('file_name', array('like'=>'%'.$column->getFilter()->getValue().'%'));
}

 

這樣就可以搜尋檔名了,而不是搜尋整個欄位。

 

本文講述如和在Mangento透過自訂自己的欄位顯示與搜尋方式,讓你提升後台使用者體驗。如果有您有更多疑問可以詢問我們,未來會撰寫更多電商網站相關文章,歡迎在下方留言給我們,也別忘了訂閱我們的電子報,以及追蹤我們的Facebook粉絲專頁唷!

 

更多Magento相關文章請看: Magento教學導覽

 

以上內容由Astralweb 歐斯瑞編寫製作

 000

推薦文章

Category:
  Magento開發

留下回應

你的電子郵件地址不會被公開.

取得獨家電子商務祕技

建立更好的策略靈感

跟上全球的網路趨勢

絕佳的電商解決方案

電子商務戰略全指南

每月發送電商戰略指南,只要填寫E-mail即可訂閱!

請到您的信箱確認,即可完成訂閱。