印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
MovableType カレンダーのリンクにタイトルを複数表示させたい

カレンダーのリンク先を日付別アーカイブにしたとき,通常は最後の記事のタイトルがリンクのタイトルとなる。最後の記事だけでなく,その日のすべての記事のタイトルを表示させるようにする。

■ ■ ■

nlog(n): 日付別アーカイブへのリンク で,カレンダーのリンク先を日付別アーカイブに設定したのだが,ひとつ不満があった。カレンダーの日付にマウスを乗せたときに表示されるタイトルである。1日に複数の投稿がある場合,最後の記事のタイトルしか表示されない。複数の投稿があるのなら,すべてのタイトルを表示させたい。この問題は MTDateHeader と MTDateFooter で解決できる。

MTDateHeader は,日付が変わったときだけに内容を表示するコンテナタグである(日本語マニュアル)。このタグは,メインインデックスで日付の表示に使われている。同じ日に複数の投稿があっても,日付は最初の1つだけに表示されるようにしているのである。MTDateFooter も同様の機能を持つコンテナタグで,日付が変わったときに内容を表示する。MTDateHeader と違うのは,「最後に」表示するという点である。

カレンダーから日付別アーカイブへのリンクは,<$MTEntryPermalink$> に archive_type 属性を追加することで可能である。アンカータグ <a> には,リンク先のタイトルが分かるように title 属性を追加してある。
<MTCalendarIfEntries>
  <MTEntries lastn="1">
    <a href="<$MTEntryPermalink archive_type="Daily"$>" title="<$MTEntryTitle$>"><$MTCalendarDay$></a>
  </MTEntries>
</MTCalendarIfEntries>

この title 属性では,この日付の最後の記事のタイトルしか表示されない。タイトルを全て表示するためには,title="<$MTEntryTitle$>" の部分を <$MTEntryTitle$> の前後で分割し,前の部分は MTDateHeader で,後ろの部分は MTDateFooter で囲む。<$MTEntryTitle$> の直後には,複数のタイトルの区切りがわかるように「... 」を追加する。構造が分かりやすいように改行してインデントをつけて書いてあるが,1行で書かなければならない。

<MTCalendarIfEntries>
  <MTEntries days="1" sort_order="ascend">
    <MTDateHeader>
      <a href="<$MTEntryPermalink archive_type="Daily"$>" title="
    </MTDateHeader>
    <$MTEntryTitle$>...
    <MTDateFooter>
      "><$MTCalendarDay$></a>
    </MTDateFooter>
  </MTEntries>
</MTCalendarIfEntries>

区切り方がかなり無理矢理なため,<MTDateHeader>〜</MTDateHeader> に含まれるダブルクォートの数が奇数になっていて気持ちが悪いが,意外にも上手くいく。

リンクを作るタグとして <$MTEntryPermalink$> を使っているが,代わりに <$MTEntryLink$> を使っても同様の結果が得られる。

RFC 1866 (rfc1866) - Hypertext Markup Language - 2.0 によれば,「title の長さに制限はないが,長すぎると途中で切られてしまうことがあるため,できれば 64 文字以内が望ましい」とされている。しかし,これはどんなブラウザで同じ表示にするための配慮のことを言っている。できるだけ多く表示できればいいので,気にしないことにする。

上のコードでは,タイトルの区切りに「... 」を使った。区切りはハッキリするが,記事が1つでもついてしまうという欠点がある。気になる場合は,Glue Plugin (Movable Type Plugin Directory: Glue) を使えば解決できるかも知れない。

2005年5月25日追記:
Vogorpants さんによれば,上で紹介した Glue プラグインで上手くいくそうです。

Posted by n at 2005-01-27 22:54 | Edit | Comments (5) | Trackback(3)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
カレンダーリンクの複数タイトル表示
ごにょごにょ弄ってたりするんですが。(笑) 今まで(というか早く気づけよって話で... Trackbacked from: Stupid excuse!! at January 28, 2005 18:19
カレンダーのリンクにタイトル表示[改]
blogのカレンダー… 実際の活用頻度はかなり疑問なのですがいじれるところはいじりたいワタクシです。 カレンダーの日付部分オンマウスでその日にエントリーしたタイトルが表示されるようにしました。 Trackbacked from: caramel*vanilla at January 29, 2005 21:21
カレンダーを変更
nlog(n)というブログで以下の記事を見つけた ・日付別アーカイブへのリンク Trackbacked from: かげさんの111から始まるHistory at April 17, 2005 02:17
Comments

こんにちわ。コレはワタシも不満に思っている事のひとつでした。早速使わせていただきます。

Posted by: 198 at January 28, 2005 17:50

すいません。TB連発してしまいました・・・。
お手数かけますが削除の方お願いします・・・。

Posted by: 198 at January 28, 2005 18:28

無問題(ノーマンタイ)でござる。

Posted by: n at January 28, 2005 20:50

こんばんわ!
198サンと同じでこのエントリーで長年(?)こうなったらいいのになぁーーっていう思いが解決しました!
TBもさせていただきました。
どうもありがとうございます!

Posted by: lomo at January 29, 2005 21:31

Glue Pluginで解決できまね。こんな感じ。
http://shikoshiko.nm.land.to/graphics/

Posted by: Vogorpants at May 25, 2005 23:35
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


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


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


Confirmation Code (必須)


Remember info (R)?