2010年1月28日
sort_method モディファイア(その2)
Movable Type で、カテゴリやフォルダを並べ替えるための sort_method モディファイアの紹介です。「sort_method モディファイア(その1)」の続きです。
1.ソート条件に対応するプラグインの作成
指定した条件に対応するプラグインを作成します。ここでは「sort_method モディファイア(その1)」で紹介したソースコードを利用します。パッケージ名は少し変えてますが、次の2ファイルを作成します。
config.yaml
id: CategorySorting
name: CategorySorting
CategorySorting.pm
package CategorySorting;
my %category_priorities = (
'foo' => 1,
'bar' => 2,
);
sub cat_sort ($$) {
my ($a, $b) = @_;
my $a_pri = $category_priorities{$a->label} || 1000;
my $b_pri = $category_priorities{$b->label} || 1000;
unless ($a_pri == 1000 && $b_pri == 1000) {
return $a_pri <=> $b_pri;
}
return $a->label cmp $b->label;
}
ハッシュ変数 %category_priorities にカテゴリの優先度を設定します。このプラグインではカテゴリ名をソート条件にしており、「foo」というカテゴリを1番目に、「bar」というカテゴリを2番目に並ぶように、優先度を設定しています。
変数 $a と $b には、ソート対象のカテゴリオブジェクトが設定されます。ソートするカテゴリの優先度がハッシュ変数%category_prioritiesに設定されていれば、2つのカテゴリのソート結果を返却し、そうでない場合は直接カテゴリ名でのソート結果を返却します。
プラグイン作成後、次のようなディレクトリ構成になるように plugins ディレクトリに2つのファイルをアップロードします。
plugins/
CategorySorting/
config.yaml
lib/
CategorySorting.pm
システム管理画面の「ツール」→「プラグイン」で「CategorySorting」が表示されればOKです。
2.sort_method モディファイアの追加
MTTopLevelCategories タグなどに、sort_method モディファイアを追加し、ソートする条件を指定します。ここではソート条件として、作成したプラグインのメソッド名を指定します。
<mt:IfArchiveTypeEnabled archive_type="Category">
<div class="widget-archive widget-archive-category widget">
<h3 class="widget-header">カテゴリ</h3>
<div class="widget-content">
<mt:TopLevelCategories sort_method="CategorySorting::cat_sort">
<mt:SubCatIsFirst>
<ul>
</mt:SubCatIsFirst>
<mt:If tag="CategoryCount">
<li><a href="<$mt:CategoryArchiveLink$>"<mt:If tag="CategoryDescription"> title="<$mt:CategoryDescription remove_html="1" encode_html="1"$>"</mt:If>><$mt:CategoryLabel$> (<$mt:CategoryCount$>)</a>
<mt:Else>
<li><$mt:CategoryLabel$>
</mt:If>
<$mt:SubCatsRecurse$>
</li>
<mt:SubCatIsLast>
</ul>
</mt:SubCatIsLast>
</mt:TopLevelCategories>
</div>
</div>
</mt:IfArchiveTypeEnabled>
ソート条件は各階層単位に適用されます。
Posted by yujiro このページの先頭に戻る
- MTEntriesタグのcategoryモディファイアに「AND」を含むカテゴリを指定する
- ブログ記事ページに自分が属するカテゴリのツリーと直属カテゴリの他のブログ記事一覧を表示する
- Movable Type 5でのMTEntriesタグのcategory/catgoriesモディファイアの動作改善について
- 親カテゴリーアーカイブにサブカテゴリーのブログ記事を表示する場合に特定のサブカテゴリーのブログ記事をフィルタリングする
- 特定のカテゴリのブログ記事を表示する
- 親カテゴリページにサブカテゴリページのリンクを表示する
- Movable Type 5(MT5)のカテゴリ削除動作
- sort_method モディファイア(その1)
- Movable Type でカテゴリ別にブログ記事の背景画像を切り替える(カスタムフィールド編)
- Movable Type でカテゴリ別にブログ記事の背景画像を切り替える
- 親カテゴリーアーカイブに表示したサブカテゴリーのブログ記事にサブカテゴリー名を表示する
- ブログ記事のない親カテゴリーに子カテゴリーのブログ記事を表示する(Movable Type 4.25~)
- カテゴリーアーカイブページの最後に「続きを読む」のリンクを表示する
- Movable Type のカテゴリーリストで特定のカテゴリーを非表示にする
- dTree カテゴリーリストにブログ記事数を表示する
- カテゴリークラウド for Movable Type
- カテゴリーの階層別にデザインを切り替える for Movable Type 4
- カテゴリーリストの中に月別カテゴリーリストを表示する
- サブカテゴリーリストを定義型リストでマークアップする
- ブログ記事に同一カテゴリーのブログ記事の前後リンクを表示する
この記事を読んだ人はこんな記事も読んでいます
人気エントリー
Hatena Hot Entries
Hatena Entries
トラックバックURL
コメントする
greeting
