印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
MovableType 月別アーカイブ一覧で表示月を強調したい

月別アーカイブ内で月名と記事数を一覧表示することは,標準の機能として可能である。その一覧の中で,表示している月の月名を強調表示したい。MTTagInvoke プラグインと PerlScript プラグインを使って実装する。

■ ■ ■

Date-Based Archive テンプレートは,月別・週別・日別のアーカイブを作るための共通のテンプレートである。このアーカイブの中で,各月名と投稿数を表示することが次のコードで可能である。

<MTArchiveList archive_type="Monthly">
<a href="<$MTArchiveLink$>"><$MTArchiveTitle$></a>
(<$MTArchiveCount$>)<br />
</MTArchiveList>

例えば,次のような表示になる。

これによって表示されるリストの中で,今開いている月の表示を強調したい。

<$MTArchiveLink$> は,<MTArchiveList archive_type="Monthly"> の外側でも使うことができ,その場合表示している月・週・日のアーカイブへのリンクになる。<$MTArchiveDate$> や <$MTArchiveTitle$> 等も同様である。したがって,この値を <MTArchiveList> 内に持ち込むことができれば,その中で比較を行うことにより,強調タグを挿入することができる。コンテナタグ内に値を持ち込むには, MTSetVar, MTGetVar が使えそう。しかし,単純に持ち込むことはできない。<$MTSetVar name="thismonth" value="<$MTArchiveDate$>"$> などのようにタグを入れ子にできないからである。そこで,プラグインの力を借りることになる。

必要なプラグインは次の2つ。

Date-Based Archive テンプレートには,次のように書けばよい。PerlScript プラグインの使い方はZakimi::Blog: SideBarのアーカイブ一覧表示を変更 が参考になった。

<MTTagInvoke tag_name="MTSetVar" name="thismonth">
<MTTagAttribute name="value"><$MTArchiveDate format="%Y%m"$></MTTagAttribute>
</MTTagInvoke>

<MTArchiveList archive_type="Monthly">
<MTPerlScript>
  $a = '<$MTGetVar name="thismonth"$>';
  $b = '<$MTArchiveDate format="%Y%m"$>';
  if ($a eq $b) {print "<strong>";}
  print '<a href="<$MTArchiveLink$>"><$MTArchiveTitle$></a>';
  if ($a eq $b) {print "</strong>";}
</MTPerlScript>
(<$MTArchiveCount$>)<br />
</MTArchiveList>

出来上がった表示は次のようになる(2004年12月を表示した場合)。

PerlScript プラグインを使う前に,Compare プラグインを使って次のようなコードを書いたが,上手く行かなかった。強調するタグが出力されなかったのである。

<MTTagInvoke tag_name="MTSetVar" name="thismonth">
<MTTagAttribute name="value"><$MTArchiveDate format="%Y%m"$></MTTagAttribute>
</MTTagInvoke>

<MTArchiveList archive_type="Monthly">
<MTIfEqual a="[MTGetVar name='thismonth']" b="[MTArchiveDate format='%Y%m']"><strong></MTIfEqual>
<a href="<$MTArchiveLink$>"><$MTArchiveTitle$></a>
<MTIfEqual a="[MTGetVar name='thismonth']" b="[MTArchiveDate format='%Y%m']"></strong></MTIfEqual>
(<$MTArchiveCount$>)<br />
</MTArchiveList>

2005年1月14日追記:
小粋空間: 選択されたアーカイブリンクを強調表示する(モジュール化対応版) では,Javascript による実装が紹介されています。

Posted by n at 2005-01-10 01:45 | Edit | Comments (0) | Trackback(3)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
選択されたアーカイブリンクを強調表示する
サイドメニューにある Monthly Archives および Categori... Trackbacked from: 小粋空間 at January 11, 2005 17:11
“選択されたアーカイブリンクを強調表示する”を試すの巻
"Monthly Archive"や"Categories"、もしくはエントリー... Trackbacked from: TOY COZY MUSEUM 別館 at January 11, 2005 23:06
ライブドアBlogからMT3.3へ移管する時のカレンダー問題
今日は第二弾。カレンダーです。 デフォルトでMT3.3はLDのような月めくりカレ... Trackbacked from: グラフィックデザイン | デザイン事務所(大阪)アドアチーブ株式会社のオフィシャルBLOG at March 08, 2007 23:38
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


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


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


Confirmation Code (必須)


Remember info (R)?