« MovableType用PostToWassrプラグイン v1.0.0 | メイン | MovableType用UploadDir Plugin Ver.0.61 »

ある月の日数をMTのテンプレート機能だけで求める

先日、あるお客様で、MTのテンプレートの中で「2008年の2月は何日あるか?というように、ある月の日数を知りたい」という方がいらっしゃいました。日数を知りたい月と年を指定すると、日数を返すテンプレートタグをプラグインとして作成しようかと考えていたところ、「できれば'MT標準の機能だけでやりたい」とおっしゃられるので、ちょっと考えてみたのが、以下のテンプレートです。

<MTSetVarTemplate name="days_in_month">
<MTIf name="year">
<MTIf name="month">
<MTSetVar name="daysin[1]" value="31">
<MTSetVar name="daysin[2]" value="28">
<MTSetVar name="daysin[3]" value="31">
<MTSetVar name="daysin[4]" value="30">
<MTSetVar name="daysin[5]" value="31">
<MTSetVar name="daysin[6]" value="30">
<MTSetVar name="daysin[7]" value="31">
<MTSetVar name="daysin[8]" value="31">
<MTSetVar name="daysin[9]" value="30">
<MTSetVar name="daysin[10]" value="31">
<MTSetVar name="daysin[11]" value="30">
<MTSetVar name="daysin[12]" value="31">
<MTSetVarBlock name="days"><MTGetVar name="daysin" index="$month"></MTSetVarBlock>
<MTIf name="year" op="%" value="4" eq="0">
  <MTIf name="year" op="%" value="100">
    <MTSetVar name="leap_year" value="1">
  </MTIf>
<MTElseIf name="year" op="%" eq="0">
  <MTSetVar name="leap_year" value="1">
</MTIf>
<MTIf name="month" eq="2">
  <MTIf name="leap_year">
    <MTSetVar name="days" value="29">
  </MTIf>
</MTIf>
<MTGetVar name="days">
</MTIf>
</MTIf>
</MTSetVarTemplate>

上記テンプレートをテンプレートモジュールとして別途保存しておき、使いたいところで呼び出すか、使いたいテンプレートに貼付けておきます。

テンプレート変数として使用している、"days", "month", "year"等は同じ名称の変数が既に使われている可能性がありますが、その場合は、適当に変更してください。

2008年の各月の日数を求める例は、以下のようになります。

<h1>月の日数</h1>
<MTSetVar name="year" value="2008">
<ul>
<MTFor var="month" from="1" to="12">
<li>
<MTGetVar name="year">年<MTGetVar name="month">月は、
<MTGetVar name="days_in_month" strip_linefeeds="1" trim="1">日まであります。
</li>
</MTFor>
</ul>

これは、次のように表示されます。

    ・2008年1月は、 31日まであります。
    ・2008年2月は、 29日まであります。
    ・2008年3月は、 31日まであります。
    ・2008年4月は、 30日まであります。
    ・2008年5月は、 31日まであります。
    ・2008年6月は、 30日まであります。
    ・2008年7月は、 31日まであります。
    ・2008年8月は、 31日まであります。
    ・2008年9月は、 30日まであります。
    ・2008年10月は、 31日まであります。
    ・2008年11月は、 30日まであります。
    ・2008年12月は、 31日まであります。

このテンプレートは、これを使って作成したページ自体がボツになってしまったので、実際に使われることはなかったのですが、せっかくですので、ここでネタとして公開することにしました。

ほとんど実用的な使い道は思いつきませんが、MTCalendarタグを使わずにカレンダーを表示することに挑戦してみるのも楽しいかもしれません。

お問い合わせ

エムロジック株式会社ではMovable Typeによるサイト構築やプラグイン開発、iPhone・Windows等のアプリケーション開発業務を行っています。
お問い合わせはこちらまで。

コメントを投稿