印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
MovableType Wikipedia で見る今日は何の日?

そらねっと通信局さんの「Wikipedia で見る今日」を Movable Type で実装してみたい。

■ ■ ■

Wikipedia には,今日は何の日か(できごとや誕生日など)の説明が365日分ある。これへのリンクを作りたい。そらねっと通信局さんは tDiary で実装している。

URL のフォーマットは,次の形に決まっている。

http://ja.wikipedia.org/wiki/m月d日

「月」と「日」の文字はパーセント形式になっている。「m」と「d」にはそれぞれ月と日を表わす数字が入り,1〜9のときはそのまま1〜9の数字が入る。ところが,Movable Type の日付タグの出力は2桁に固定されている。つまり,1〜9のときは,01, 02, ..., 09 のように0を前に付け加えて2桁にしてしまうのである。この0が邪魔。そこで,月別アーカイブで表示月を強調投稿のある月の総数 で利用した PerlScript Plugin を利用して,邪魔な0を取り除くことにした。

Wikipedia の今日へのリンクは次のコードで作ることができる。これはメインインデックスに置く場合である。

<MTPerlScript>
$m = sprintf("%d", <$MTDate format="%m"$>);
$d = sprintf("%d", <$MTDate format="%d"$>);
$wikiurl = "http://ja.wikipedia.org/wiki/" . $m . "%E6%9C%88" . $d . "%E6%97%A5";
print '<a href="http://ja.wikipedia.org/wiki/">Wikipedia</a> で見る ';
print '<a href="' . $wikiurl . '">'. $m . "月" . $d . "日" . "</a>";
</MTPerlScript>

あまり美しいとは言えないが仕方ない。個別アーカイブからリンクを張る場合は,<$MTDate$> の代わりに <$MTArchiveDate$> を使えばよい。

マニュアル - 日付タグのフォーマット をよく読むと,日本語表示の場合は%b や %B で0のつかない月の表示ができるとある(年月日を日本語表示にするには,管理画面の「日付用の言語を日本語にするか,<$MTDate$> に language="jp" 属性を追加する)。しかし,日については0がつくか空白がつくという微妙な仕様。日では0か空白を取り除かなければならないので,上のように月と日の扱いを同じにしたのだった。

2005年3月8日追記:
上記のコードは問題があることが分かりました。以下のように <$MTDate$> をシングルクォートで囲んでください(nlog(n): 突然 Main Index の作成に失敗)。

<MTPerlScript>
$m = sprintf("%d", '<$MTDate format="%m"$>');
$d = sprintf("%d", '<$MTDate format="%d"$>');
$wikiurl = "http://ja.wikipedia.org/wiki/" . $m . "%E6%9C%88" . $d . "%E6%97%A5";
print '<a href="http://ja.wikipedia.org/wiki/">Wikipedia</a> で見る ';
print '<a href="' . $wikiurl . '">'. $m . "月" . $d . "日" . "</a>";
</MTPerlScript>
Posted by n at 2005-02-26 18:46 | Edit | Comments (0) | Trackback(1)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
今日のWikipedia
今日のWikipediaをjavascriptで書いてみました。 var now = new Date(); var month = now.getMonth() + 1; // 月 var day = now.getDate(); // 日 document.write(''); document.write(month + '月' + day + '日'); document.write(''); アンカータグはそのままでは表... Trackbacked from: キリンさん の Blog at May 30, 2005 02:15
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


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


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


Confirmation Code (必須)


Remember info (R)?