Under the Bridge

a Picture of the Late Him

エントリと同じタグのついた記事一覧をリストアップ(2)

2007年10月25日 22:48 | Writer: yoshi | 記事本文 | コメント(0) | トラックバック(1)

以前プラグインを用いてやった、「エントリと同じタグのついた記事一覧をリストアップ」を、テンプレートタグのみで実現するサンプル。

これは某mixiのコミュニティで出されていたお題であり、私は大半を人様のコードをパクってちょこちょこ書き換えただけなんで、私の成果では無い。でも、覚えておきたいテクニックなので、メモ的に書いておく。

コード

以下。


<MTSetVarBlock name="entrytags"><MTEntryTags glue=" OR "><$MTTagName$></MTEntryTags></MTSetVarBlock>
<MTSetVarBlock name="thisid"><MTEntryID></MTSetVarBlock>
<MTEntries tag="$entrytags" lastn="10">
    <MTSetVarBlock name="entryCount"><MTEntriesCount></MTSetVarBlock>
    <MTIf name="entryCount" gt="1">
        <MTSetVarBlock name="eid"><MTEntryID></MTSetVarBlock>
        <MTSetVarBlock name="addrtag"><MTEntryTags glue=" OR "><$MTTagName$></MTEntryTags></MTSetVarBlock>
        <MTEntriesHeader><ul></MTEntriesHeader>
        <MTIf name="addrtag" like="^("$entrytags")">
            <MTUnless name="eid" eq="$thisid">
                <li><a href="<MTEntryPermalink>"><MTEntryTitle></a></li>
            </MTUnless>
        </MTIf>
        <MTEntriesFooter></ul></MTEntriesFooter>
    </MTIf>
</MTEntries>

いちおう解説

1行目。現エントリのタグ文字列をOR区切り文字で抽出。変数entrytagsへ記憶。

2行目。現エントリのidを変数thisidへ記憶。リストから自分自身をフィルタするのに用いる。

3行目で抽出したタグを含むエントリ10個取得。”りんご OR ばなな” などという文字列で比較するんで、りんごタグのみのついたエントリもばななタグのみのついたエントリもりんごとばななどっちもタグがついているエントリも全て含まれる。

4行目。変数entryCountへエントリ個数を記憶する。

5行目。entryCountが1よりおおきい(gtモデファイア)ときのみにここ以下IF文が実行される。

6行目。MTEntriesループ中でエントリidを求めeid変数へ格納。

7行目。MTEntriesループ中でエントリのタグ文字列をOR区切りで抽出。変数addrtagへ代入。

8行目。最初のエントリならul付加

9行目。addrtagとentrytagsをlikeモデファイアで比較。このコードではりんごのみ、みかんのみ、りんご OR みかん、どのケースでもマッチしたと判断する。eqモデファイアではentrytagsが”りんご OR みかん”のとき、addrtagも”りんご OR みかん”でなければマッチしたとみなされないようだ。つまり”りんご”のみのエントリと”みかん”のみのエントリがスルーされる。わたしはそれらエントリも見つけて欲しかった。likeモデファイアでは区切り文字は”|”を使用するんだが、折角entrytagsとaddrtagで文字列を一度求めているんで、そのまま使用した。内部ではどう扱われているのかは検証していないが、動作はするようだ。

10行目。MTUnlessで、エントリidと同じidのエントリ(つまり自分自身)をフィルタする。現在のエントリと同じエントリはリストには加えられない。

11行目。エントリ表示。

14行目。最後のエントリなら/ul付加。

トラックバック(1)

このブログ記事を参照しているブログ一覧: エントリと同じタグのついた記事一覧をリストアップ(2)

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

» エントリーアーカイブにエントリタグで関連する記事一覧を表示する(山仁哲学堂)~のトラックバック

エントリーアーカイブにタグで関連づけられた記事一覧を表示する方法です。 続きを読む

2009年1月13日 14:49

コメントする






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

parts

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

あわせて読みたい

なかのひと

2008 yoshi(apstar)