MTで管理画面の記事のソート順を変える

MovableType4.2のブログ一覧ページで、その並び順を変更したいという要望があった。通常はauthored_on、つまり作成日なのだが、それを編集日でソートしたいとのこと。

タグを頼りに、ソースコードをひっくり返すと、それっぽい箇所を発見。次のように修正したところ、編集日によってソートすることができた。

修正箇所は/lib/MT/CMS/Entry.pmの500行目付近。

修正前

sub list {
略
my %arg;
$arg{'sort'} = $type eq 'page' ? 'modified_on' : 'authored_on';
$arg{direction} = 'descend';
my $filter_key = $q->param('filter_key') || '';
my $filter_col = $q->param('filter')     || '';
my $filter_val = $q->param('filter_val');
my $iter_method;
my $total;
略

修正後

sub list {
略
my %arg;
#$arg{'sort'} = $type eq 'page' ? 'modified_on' : 'authored_on';#コメントアウト
$arg{'sort'} = 'modified_on';#追加
$arg{direction} = 'descend';
my $filter_key = $q->param('filter_key') || '';
my $filter_col = $q->param('filter')     || '';
my $filter_val = $q->param('filter_val');
my $iter_method;
my $total;
略

あわせてテンプレートも修正する。場所は/tmpl/cms/include/entry_table.tmplの79行目付近。

テンプレートの変更にはCMSContextを使うと安全です。

修正前

<th class="date">
<mt:if name="object_type" eq="page">
<__trans phrase="Last Modified">
<mt:else>
<__trans phrase="Created">
</mt:if>
</th>

修正後

<th class="date">
<__trans phrase="Last Modified">
</th>

この変更による影響が他の箇所へ出るのかどうかについては未検証。後ほど調べよう。

ちなみにソートに使えそうな値にはこんなのがありそうだけど、動くのかな。。。

  • created_on
  • created_by
  • modified_on
  • modified_by
  • authored_on
  • author_id
  • pinged_urls
  • tangent_cache
  • template_id
  • class
  • meta
  • comment_count
  • ping_count

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA