Under the Bridge

a Picture of the Late Him

あるエントリの存在するカテゴリの、サブカテゴリ内のエントリを抽出する

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

このサンプルは、MT4.1ではなく、MT4.01で動作する。

「あるエントリの存在するカテゴリの、サブカテゴリ内のエントリを抽出する」という動作を実現する。

mixiでマイミクさんがぶつかった難題。使途はともかく、見たことのない(見たことはあるが使用したことがない)テンプレートタグを用い、Setvat系のテンプレートタグを用いる。ということで、早速わたしもやってみた。

サンプルコード


<MTSetVarBlock name="SubCatName"><$MTEntryCategory$></MTSetVarBlock>
<MTSetVarBlock name="CurEntName"><$MTEntryTitle$></MTSetVarBlock>
<MTEntriesWithSubCategories category="$SubCatName">
	<MTSetVarBlock name="LopEntName"><$MTEntryTitle$></MTSetVarBlock>
	<MTIf name="LopEntName" ne="$CurEntName">
		<$MTEntryDate format="%Y.%m.%d"$><a href="<$MTEntrylink$>"><$MTEntryTitle></a>
	</MTIf>
</MTEntriesWithSubCategories>

コードの説明

1行目:エントリの属するカテゴリ名をSubCatNameという変数へ記憶(ちょっとこの変数名はよくなかった、紛らわしい)。

2行目:そのエントリ名を記憶。

3行目:MTEntriesWithSubCategoriesループ開始。エントリの属するカテゴリSubCatNameにサブカテゴリがある場合は、その中のエントリも抽出される。

4行目:ループ中で出現するエントリ名をLopEntName変数へ記憶。

5行目:そのエントリそのものと、ループ中で出現したエントリを比較し、同じでなかった場合このIf分の中が実行される。要は出力リストからこのエントリのみをはずす処理。ne="$CurEntName"というふうに、変数をモデファイアに用いるときは変数先頭へドルマークを付与する。コレがないと正常動作しない。

6行目:エントリが取得できる。何かしらの必要な処理を行う。

7行目:Ifオワリ

8行目:ループオワリ

結果と考察

MT4.1bで確認したが、これで動作はするようである。

わたしは普段サブカテゴリを使わないので、テスト環境を作成するのに手間がかかった。それで環境をエクスポート・インポートで移動すると、サブカテゴリがメインカテゴリと同一階層となった...orz

自分では使わないと思う。

トラックバック(0)

このブログ記事を参照しているブログ一覧: あるエントリの存在するカテゴリの、サブカテゴリ内のエントリを抽出する

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

コメント(2)

@Style (2008年1月12日 17:21)

うぉ、簡単!ですが、『使うことあるの?』ってことですね。

yoshi (2008年1月12日 17:42)

そうですね、使途は...場合によりますね...という感じです。
これもSetVar系では「ループ、比較」というスタンダード?なコードですね。

コメントする






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

parts

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

あわせて読みたい

なかのひと

2008年4月5日開催、MT4LP5

2008 yoshi(apstar)