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教學導覽
我要留言