印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
MovableType 月別アーカイブを PHP で表示する

日別アーカイブに続き,月別アーカイブも PHP で表示することにする。

■ ■ ■

記事の概要を部品にしたので,月別アーカイブにもこの部品を PHP で読み込んで表示することにした。再構築でファイルを出力した場合,複数のテンプレートで利用してこそ意味があるというものだからである。

前提としては記事の概要の部品化をしておくことである(nlog(n): 長年日記を PHP で実装する)。

月別アーカイブの PHP 化は単純である。月別アーカイブテンプレートを編集し,<MTEntries>〜<MTEntries> を削除して,次のコードに置き換えればよい。

<?php
$thismonth = '<$MTArchiveDate format="%Y_%m"$>';
$files = glob("abstract/" . $thismonth . "_*.html");
foreach($files as $file) {
  include($file);
}
?>

しましまに色づけをしたい場合は,上の替わりに次のコードにする。このサイトで使っているのはこれ。

<?php
$count = 1;
$search = '<div class="blogbody year';
$replaceeven = '<div class="blogbody evenbody">';
$replaceodd = '<div class="blogbody oddbody">';
$thismonth = '<$MTArchiveDate format="%Y_%m"$>';
$files = glob("abstract/" . $thismonth . "_*.html");
foreach ($files as $file) {
  foreach (file($file) as $line) {
    if (ereg($search, $line)) {
      if ($count % 2) {
        $line = $replaceeven;
      } else {
        $line = $replaceodd;
      }
      $count++;
    }
    echo $line;
  }
}
?>

この場合は,スタイルシートに色づけ用のクラス evenbody と oddbody を定義しておく。

        .oddbody {background-color: #FFF4EA;}
        .evenbody {background-color: #FAFAFA;}
Posted by n at 2007-03-21 23:27 | Edit | Comments (0) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


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


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


Confirmation Code (必須)


Remember info (R)?