Under the Bridge

a Picture of the Late Him

MT4.1:年度タイトルつき月別アーカイブ(4月で新年度切り替え)

2008年1月18日 00:03 | Writer: yoshi | 記事本文 | コメント(0) | トラックバック(0)

Movable Type 4.1ベータ3で、「年度タイトルつき月別アーカイブ(4月で新年度切り替え)」というお題にチャレンジ。

20080117_02.gif

先のエントリ(MT4.1:年タイトルつき月別アーカイブ(1月で新年切り替え))と異なるのは、4月で年度区切りとするところである。当初はコードを共用化しようと考えたが、ちょっと時間がかかる予感がしたのでやめた。ちなみに先のエントリよりこちらのほうが先に完成していた。

サンプルコード

<MTSetVar name="BeginMonth" value="4">
<MTArchiveList archive_type="Monthly">
    
    <MTSetVarBlock name="YearLabel"><MTArchiveDate format="%Y"></MTSetVarBlock>
    <MTSetVar name="YearLabel" value="1" op="sub">
    <MTSetVar name="YearLabel" value="年度" append="1">

    <MTArchiveListHeader>
        <h3><MTGetVar name="YearLabel"></h3>
        <ul>
    </MTArchiveListHeader>

    <MTSetVarBlock name="MonthData"><MTArchiveDate format="%m"></MTSetVarBlock>

    <MTIf name="MonthData" eq="$BeginMonth">
        <li><a href="<MTArchiveLink>"><MTArchiveTitle format="%m"></a></li>
        </ul>
        <h3><MTGetVar name="YearLabel"></h3>
        <ul>
    <MTElse>
        <li><a href="<MTArchiveLink>"><MTArchiveTitle format="%m"></a></li>
    </MTIf>

    <MTArchiveListFooter>
        </ul>
    </MTArchiveListFooter>

</MTArchiveList>

しくみ

1行目:BeginMonth変数を4で初期化。これは4月から新しい年度ということであり、6などとすると6月を新しい年度とする。なお、1月だけは指定できない(不具合起こる)。

2行目:MTArchiveListループを archive_type="Monthly"モデファイアを設定して開始する。

4行目:YearLabel変数へ年を代入。

5行目:YearLabel変数の値を-1する。

6行目:YearLabel変数の値へ"年度"という文字列を追加する。append="1"というモデファイアは公式ドキュメントにはなかった気がするが、このように文字列の連結に使用できる。

8行目:ループ初回のみ実行

9-10行目:その初回のループで、年度とul開始タグを出力する。

13行目:MonthData変数へ現在の月を代入する。

15行目:現在の月MonthData変数と区切り月BeginMonth変数を比較。同じであるならIf内のコードを実行。

16行目:アーカイブリンクをliタグでリンクつきで出力する。

17行目:ul閉じるタグを出力。

18-19行目:前の年の年度を出力する。つまりここが4月に通過するIFブロックであれば、次回ループの3月以降のデータのためにここでh3年度ヘッダ、ul開始タグを付加する。

21行目:4月(=BeginMonth変数で与えた月)でなければ、単にアーカイブリンクをliタグでリンクつきで出力する。

24-26行目:ループ最終回であればul閉じるタグを出力する。

結果と考察

結果はOKである。ただしここでは一年分のデータしか所有していないので、複数年のテストはやっていない。

BeginMonth変数へ1をセットして、1月を区切りにできるとかなり汎用性が上がるのだが、正常動作しない。つまり、可能性は感じるが、未だ中途半端なコードである。1月をセットして不具合となる原因はわかってはいるが、あまり時間がないため、急遽「MT4.1:年タイトルつき月別アーカイブ(1月で新年切り替え)」を作って、お茶を濁した(笑

トラックバック(0)

このブログ記事を参照しているブログ一覧: MT4.1:年度タイトルつき月別アーカイブ(4月で新年度切り替え)

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

コメントする






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

parts

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

あわせて読みたい

なかのひと

2008 yoshi(apstar)