今年は、1年間で 100 本のブログ記事を書こうという密かな目標があるのですが、現在の状況をいちいち管理画面でカウントするのが面倒なので、DynamicMTML を使ってリアルタイムで状況を表示させてみます。 これには MTSearchEntries タグを利用します。...
今年は、1年間で 100 本のブログ記事を書こうという密かな目標があるのですが、現在の状況をいちいち管理画面でカウントするのが面倒なので、DynamicMTML を使ってリアルタイムで状況を表示させてみます。
これには MTSearchEntries タグを利用します。
今回の内容を実現するテンプレートは次のようになります。
<mt:DynamicMTML>
<$mt:Date format="%Y" setvar="year"$>
<mt:If name="year" eq="2012">
<$mt:SetVar name="goal" value="100"$>
<$mt:SetVar name="count" value="0"$>
<mt:SearchEntries query="2012-01-01 00:00:00" target="authored_on" operator=">" blog_id="1" lastn="9999">
<$mt:SetVar name="count" op="++"$>
</mt:SearchEntries>
<ul>
<li><$mt:Var name="year"$>年の目標 : ブログ記事<$mt:Var name="goal"$>本</li>
<li>2012-01-01 から <$mt:Date format="%Y-%m-%d"$> までに「<$mt:Var name="count"$>」の記事を書きました。</li>
<li>目標達成まで残り「<$mt:Var name="goal" op="-" value="$count"$>」!</li>
</ul>
</mt:If>
</mt:DynamicMTML>
上記の完成したテンプレートにコメントを入れる形で解説します。
なお、指定期間内のブログ記事をリストアップする方法は「はじめての DynamicMTML #13 - 指定期間内の記事をリストアップする」を参照してください。
<!-- 全体をDynamicMTMLで出力 -->
<mt:DynamicMTML>
<!-- テンプレートを再構築した年(今年)を変数yearにセット -->
<$mt:Date format="%Y" setvar="year"$>
<!-- 変数yearが2012年だったらIF文内を実行 -->
<mt:If name="year" eq="2012">
<!-- 目標を変数goalにセット -->
<$mt:SetVar name="goal" value="100"$>
<!-- 変数countを初期化 -->
<$mt:SetVar name="count" value="0"$>
<!-- 2012年1月1日以降のブログ記事をリストアップ -->
<mt:SearchEntries query="2012-01-01 00:00:00" target="authored_on" operator=">" blog_id="1" lastn="9999">
<!-- 何も出力しないで変数countをインクリメント。この変数countが該当するブログ記事数になる -->
<$mt:SetVar name="count" op="++"$>
</mt:SearchEntries>
<ul>
<!-- 変数yearと変数goalの値を出力 -->
<li><$mt:Var name="year"$>年の目標 : ブログ記事<$mt:Var name="goal"$>本</li>
<!-- テンプレートを再構築した日付(今日)と変数countの値を出力 -->
<li>2012-01-01 から <$mt:Date format="%Y-%m-%d"$> までに「<$mt:Var name="count"$>」の記事を書きました。</li>
<!-- 目標値から今年公開した記事数を引いた数を出力 -->
<li>目標達成まで残り「<$mt:Var name="goal" op="-" value="$count"$>」!</li>
</ul>
</mt:If>
</mt:DynamicMTML>
以上です。