« サイトをモジュール化 | ホーム | 輸入版CDが買えなくなる »

MT本文をモジュール化

またまたMTのお話。最近、MTに投稿するためにMTをいじっているようで、本末転倒気味ではあるが。今度はなんと本文をモジュール化した。

こちらのサイトを見て触発された。

http://221bbakerstreet.org/archives/2004/03/16_0008.php
http://cross-breed.com/archives/200405140036.php

また例によって行った作業のメモ。

1.新しいArchive Templeteを作る

「Templete→Create New Archive Templete(新しいアーカイブテンプレートを作る)」を行う。テンプレート名は「Entry Body」、Output File名は「entry_body.php」とした。リンクするテンプレートは空白で、内容は「<$MTEntryBody$>」のみをぽつんと放り込む。保存する。

俺の場合のエントリーは、Bodyのほかに「続きを見る」と称して「Extended Entry」にも文章を書き込んでいる。なので、もう一つArchive Templeteを作る。テンプレート名は「Entry More」、Output File名は「entry_more.php」、同じくリンクするテンプレートは空白で、内容は「<$MTEntryMore$>」である。

2.アーカイブの設定

「Weblog Config→Archive Files」に行き、「Create New Archive/Templete Association」を作成する。アーカイブの種類は「Individual」、テンプレートは「Entry Body」。これをAddする。同じように「Individual」の「Entry More」も追加する。

「Archive File Templete」の欄に好きな出力ファイル名を入れる。俺の場合は、「年」ディレクトリの下に/bodyというディレクトリを作り、そこにEntry Body/Moreの出力をためることにした。

Entry Body→「<?php include("<$MTArchiveDate format="%Y/body/%m%d_%H%M_body"$>.php"); ?>」
Entry More→「<?php include("<$MTArchiveDate format="%Y/body/%m%d_%H%M_more"$>.php"); ?>」

「Preffered」のラジオボタンは「Individual Entry Archive」のままでよい。

3.タグを書き換え

Main Index、Category/Date-Based/IndividualのそれぞれのArchiveの中の該当部分を書き換える。

具体的には(Main Indexの場合)、

「>$MTEntryBody$>」→「<?php include("./blog/archives/<$MTArchiveDate format="%Y/body/_%m%d_%H%M_body"$>.php");?>」
「>$MTEntryMore$>」→「<?php include("./blog/archives/<$MTArchiveDate format="%Y/body/_%m%d_%H%M_more"$>.php");?>」

各Archiveの場合は、パスが変わってくると思うので、適当に修正する。

4.Rebuild

保存後全てをRebuildすると、Main Indexや各Archive Fileが、Entry BodyおよびEntry Moreに出力されたファイルを読みに行くようになっている。

今まで、各ファイルごとにEntryが表示されていたものが一つのEntryを共有することになるので、当然ディスク使用量は節約できる(文章のファイルなので、驚くほどではないが)。Rebuildに関しては、全体をRebuildしても確かに速くなったような気がする。サーバ負担は確実に減っているはずである。

PHPすばらしい。当分これでやってみようと思う。

トラックバック(3)

トラックバックURL: http://keitaro.krbys.net/mt5/mt-tb.cgi/99

MT一度壊れる前は、本文モジュール化してたのですが、再度実行しました 本文モジュ... 続きを読む

このブログもエントリー数が200を超え、 リビルドにものすごい時間がかかるように... 続きを読む

本文の以前のエントリで「本文のモジュール化(krbys.net様)」を行ったが、... 続きを読む

コメント(5)

ファイル数が多くなって混雑するので、新規アーカイブをEntry Body一つに絞り、内容を

<$MTEntryBody$>
<MTEntryIfExtended>
<a name="more"></a>
<$MTEntryMore$>
</MTEntryIfExtended>

として、EntryBodyとEntryMoreを統合した。Main Indexにはincludeしないようにした。ファイル数もなんとなくすっきり。

自分のサイト内を回ってみたりすると、ブラウザがキャッシュしているファイルを再度表示したりすることがあるので、そういう意味では表示の体感速度は速くなっている。

はじめまして。

こちらを参考に自分も本文モジュール化に挑戦してみました。
非常に分かりやすく参考になりました。ありがとうございました。

トラックバックを2つ送ってしまったのでどちらか削除していただけないでしょうか。
御手数かけますが宜しくお願いいたします。

訪問ありがとうございます。

TBの件、了解いたしました。これからもよろしくお願いします。」

私もこれを参考に本文をモジュール化したのですが、記事を更新する時に、タイムスタンプでファイルを作成するため、ファイルを上書きせずに、新たにファイルを作成してしまいます。
そうなると、過去の記事も最新の記事になってしまいます。
この回避方法ってありますでしょうか?

こんにちは。

私もあまり詳しくないのですが、記事を更新する際、タイムスタンプ(?)("Autholized on"という部分の日時)が変わっていなければ、上書きされるのではないでしょうか?

私の場合、記事を修正する際など、特に問題とはなっておりません。話がずれていたら申し訳ありません。

コメントする

このブログ記事について

このページは、keitaroが2004年5月27日 01:46に書いたブログ記事です。

ひとつ前のブログ記事は「サイトをモジュール化」です。

次のブログ記事は「輸入版CDが買えなくなる」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。