magetno自定义grid的默认排序方式

以cms page为例,后台cms page默认是按照identifier升序排列的,如果想要找到最近修改的页面就需要点击Last Modified列让其降序排列,网站运营几年后页面多了非常不方便,所以简单暴力的方法是直接把页面默认的排序方式改成按Last Modified倒序排列。

page列表是通过文件Mage_Adminhtml_Block_Cms_Page_Grid生成的,要实现上面的改动我们需要对其进行重写。

首先在local/SH下创建自己的Cms模块,并激活它,app/etc/modules/SH_All.xml

1
2
3
4
5
6
7
8
<config>
<modules>
<SH_Cms>
<active>true</active>
<codePool>local</codePool>
</SH_Cms>
</modules>
</config>

模块配置文件,local/SH/Cms/etc/config.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<config>
<modules>
<SH_Cms>
<version>0.1.0</version>
</SH_Cms>
</modules>
<global>
<blocks>
<adminhtml>
<rewrite>
<cms_page_grid>SH_Cms_Block_Adminhtml_Page_Grid</cms_page_grid>
</rewrite>
</adminhtml>
</blocks>
</global>
</config>

创建自己的Block文件,重写核心的Mage_Adminhtml_Block_Cms_Page_Grid方法,local/SH/Cms/Block/Adminhtml/Page/Grid.php

1
2
3
4
5
6
7
8
9
10
11
<?php
class SH_Cms_Block_Adminhtml_Page_Grid extends Mage_Adminhtml_Block_Cms_Page_Grid
{
public function __construct()
{
parent::__construct();
$this->setId('cmsPageGrid');
$this->setDefaultSort('update_time');
$this->setDefaultDir('DESC');
}
}

到此对Mage_Adminhtml_Block_Cms_Page_Grid的重写已经完成了,重写其它grid类似,比较容易出错的地方是global里面rewrite相关的配置,跟前台block的重写有一点点区别。