印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
MovableType 投稿のある月の総数を表示するには

PerlScript プラグインを使うと,投稿のあった月の総数や,カテゴリの総数を計算して表示することができる。

■ ■ ■

利用するプラグインは,nlog(n): 月別アーカイブ一覧で表示月を強調したい で月名の比較にも使った PerlScript Plugin。テンプレートの中で Perl のコードを直書きできる。もちろん,すべての Perl の機能を使えるわけではなく,制約もあるが,かなり強力である。

投稿のあった月は <MTArchiveList archive_type="Monthly"> で表示できる。表示しなくてもいいので,表示せずに数だけ数えるためだけに使う。

<MTSetVar name="list_count" value="0">

<MTArchiveList archive_type="Monthly">
<MTPerlScript>
  $ctx->{__stash}{vars}{list_count}++;
</MTPerlScript>
</MTArchiveList>

<$MTGetVar name="list_count"$>

「list_count」というのは適当な変数名で,何でもよい。最初に 0 で初期化して,途中で1ずつ足していって,最後に表示をしている。PerlScript プラグインのすごいのは,Movable Type で使っている内部の変数にもアクセスできてしまうことである。それとも Movable Type の仕様がすごいのか? いずれにせよ,MTSetVar と MTGetVar で使っている変数は,Movable Type の中では「$ctx->{__stash}{vars}{変数}」という形で参照されているのである。

MTArchiveList を MTCategories に変えれば,カテゴリの総数もカウントすることができる。変数名は「list_count」でなくてもいいが,MTSetVar, MTPerlScript 内, MTGetVar で揃えておく必要がある。

<MTSetVar name="list_count" value="0">

<MTCategories>
<MTPerlScript>
  $ctx->{__stash}{vars}{list_count}++;
</MTPerlScript>
</MTCategories>

<$MTGetVar name="list_count"$>

このプラグインを使えば,何でもできてしまいそう(言いすぎ?)。

Posted by n at 2005-01-10 14:02 | Edit | Comments (0) | Trackback(2)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
PerlScript Pluginを使用してトラックバック総数を表示
総エントリー数は、<$MTBlogEntryCount$>。 総コメ... Trackbacked from: Antute Blog at March 16, 2005 01:05
ダイナミック・パブリッシングで頁分割(3) archives.html編
archives.htmlというのがあります。公開されている全エントリーを表示するファイルで標準で用意されています。WingMemoでは月別アーカイブを使ってい... Trackbacked from: WingMemo at September 05, 2006 19:50
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?