Under the Bridge

a Picture of the Late Him

MT4.1:カテゴリの並べ替え+表示切り替え(カスタムフィールド+ハッシュ変数)

2008年1月14日 15:57 | Writer: yoshi | 記事本文 | コメント(2) | トラックバック(0)

Movable Type 4.1以降でしか動作しない。

先ほどのカテゴリ並べ替え(MT4.1:カテゴリの並べ替え(カスタムフィールド+ハッシュ変数))を更に拡張し、場所によって表示したい・したくないなどの機能を拡張したサンプル。

これも、プラグインは用いないが、カスタムフィールドを用いる。

準備1

下準備については、「MT4.1:カテゴリの並べ替え(カスタムフィールド+ハッシュ変数)」エントリも併せて参照のこと。ソートオーダー用のフィールドも必要となるからだ。

今度の場合も、カスタムフィールドで新しいフィールドを作成する。

  • システムオブジェクト:カテゴリ
  • 名前:この実験では手抜きで「タイプA」とした。「表示タイプ1」や「食い物関係」「旅行関係」とかでもいい。
  • 説明:わかればいい。「旅行系の記事には、コレにチェックを入れる」とか、そんなんでいい。
  • 種類:チェックボックス
  • 必須?:どっちでもいい。使途に応じて。
  • 規定値:チェックしておくのが無難だろう。
  • ベースネーム:勝手につくがそのままとした。
  • テンプレートタグ:CategoryShowTypeAとした。わかれば何でもいいだろう。

今回の実験では、こういうフィールドを3セット作成。つまり、ブログの中の3ヶ所でカテゴリリストの生成切り替えを行う訳だ。

タイプA:Aタイプに属するカテゴリ。技術系の記事と仮定。CategoryShowTypeAというテンプレートタグでチェックの値を取り出せるようになる。

タイプB:Bタイプに属するカテゴリ。駄文やプライベート系の記事と仮定。CategoryShowTypeBというテンプレートタグでチェックの値を取り出せるようになる。

グローバル:すべてのカテゴリ。すべてのカテゴリで1をセットしておく。CategoryShowGlobalというテンプレートタグでチェックの値を取り出せるようになる。

なお、このサンプルの命名は適当。

20080114_03.gif

準備2

すべてのカテゴリに表示切り替えのチェックを与える。タイプに応じて、表示したいカテゴリにチェックをつければいい。グローバルには必ずチェックを入れておく。

なおソートオーダーのテキストフィールドへも適切な値を入れておく。

20080114_04.gif

カテゴリ表示を並べ替え+表示切り替えサンプルコード

<MTCategories>
	<MTSetvarBlock name="catshow"><MTCategoryShowglobal></MTSetvarBlock>
	<MTSetvarBlock name="catid"><MTCategorySortOrder></MTSetvarBlock>
	<MTSetvarBlock name="catlinkset"><a href="<$MTCategoryArchiveLink$>"<MTIfNonEmpty tag="MTCategoryDescription"> title="<$MTCategoryDescription$>"</MTIfNonEmpty>><$MTCategoryLabel$> (<$MTCategoryCount$>)</a></MTSetvarBlock>
	<MTSethashVar name="catlist">
	<MTIf name="catshow" eq="1">
		<MTSetVar name="$catid" value="$catlinkset">
	</MTIf>
	</MTSethashVar>
</MTCategories>

<mt:loop  name="catlist" sort_by="key">
	<p><$mt:getvar name="__value__"$></p>
</mt:loop>

メカニズム

各行の詳しい解説は「MT4.1:カテゴリの並べ替え(カスタムフィールド+ハッシュ変数)」エントリを参照。

今回は <MTSetvarBlock name="catshow"><MTCategoryShowglobal></MTSetvarBlock> という一行が出現する。これはカスタムフィールドの表示・非表示切り替えチェックの値を取得してcatshow変数へ格納しているのだが、MTCategoryShowglobalの部分を、表示を切り替えたい場所によって、CategoryShowTypeAとか。CategoryShowTypeBとかに書き換えてあげるとヨイ。

ちなみにMTCategoryShowglobalとしておくと、通常のMTCategories~MTCategoryNameで取得できる「すべての」カテゴリとなる。

ハッシュ変数を生成する際に、MTIf name="catshow" eq="1" で表示するかどうかを判断し、表示する(=チェックがついてた)カテゴリのみを変数へ加えていく。

あとはMTLoopでぐりぐりループしてリンク含むカテゴリリストを出力するだけ。

トラックバック(0)

このブログ記事を参照しているブログ一覧: MT4.1:カテゴリの並べ替え+表示切り替え(カスタムフィールド+ハッシュ変数)

このブログ記事に対するトラックバックURL:

コメント(2)

Dakiny (2008年1月14日 19:39)

燃えてますね!どこまでやるのか楽しみです:^D

yoshi (2008年1月14日 20:50)

今は、まだまだ自分の腕磨きです。まだまだ足りません...

コメントする






Categories
Entries
Feed
スポンサードリンク

parts

フィードメーター - Under the Bridge

あわせて読みたい

なかのひと

2008年4月5日開催、MT4LP5

2008 yoshi(apstar)