以前に「リアルタイム再構築プラグイン」というものを公開していましたが、これのMT4/5対応版を公開します。
この使い方を数日に分けて紹介します。
2007年9月6日
デバッグ用のログを出力する処理が残っていました。
9月6日午前8時30分までにダウンロードされた方は、お手数ですが再度ダウンロードしていただき、lib/RealtimeRebuild.pmを差し替えてくださいますようお願いします。
1.概要
リアルタイム再構築プラグインは、Perl版ダイナミック・パブリッシングと同様に、アクセスがあった時点でページを再構築するものです。
任意のテンプレートを再構築することができますが、基本的には、アクセスがあるたびに変化させたい部分だけを再構築して、Ajax等を利用して他のページに読み込ませるために使うことを想定しています。
また、従来のリアルタイム再構築プラグインの機能に加えて、ページをキャッシュする機能や、PHPが含まれているページを正しく表示できるようにする機能を追加しました。
2.インストール
このプラグインは、以下のアドレスからダウンロードすることができます。
- Movable Type 4.0用
RealtimeRebuild_1_60.zip - Movable Type 4.1/4.2用
RealtimeRebuild_1_62.zip - Movable Type 5用
RealtimeRebuild_1_72.zip
プラグインの継続的な開発やサポートのために、プラグインをご利用された方は、ドネーション(寄付)を行っていただけると幸いです。
ドネーションの方法は、こちらのページをご参照ください。
また、このプラグインの他にも、いくつかのプラグインを配布しています。
配布中のプラグインは、Movable Type Plugin Directoryのページをご参照ください。
Movable Typeのプラグイン開発等のドキュメント「Movable Type Developer's Guide Volume 1」も販売しています。
ご自分でプラグインを作ってみたい方に、ぜひお勧めしたい一冊です。
詳細は特設ページをご覧ください。
また、このプラグインは「RebuildHelper」というプラグインを併用します。これは以下のアドレスからダウンロードすることができます。
- Movable Type 4.0~4.13用
RebuildHelper_1_01.zip - Movable Type 4.2用
RebuildHelper_1_03.zip - Movable Type 5用
RebuildHelper_1_04.zip
これらのファイルを解凍すると、「RealtimeRebuild」「RebuildHelper」というフォルダができます。
これらのフォルダを丸ごと、Movable Typeの「plugins」ディレクトリにアップロードします。
そして、「RealtimeRebuild」ディレクトリの中の「mt-realtime-rebuild.cgi」のパーミッションを「755」などに変え、実行可能にします。
3.リアルタイム再構築を許可するテンプレートの設定
リアルタイム再構築を行う前に、それを許可するテンプレート設定します。
ブログのメニューで「設定」→「プラグイン」を選び、プラグイン設定のページを開きます。
そして、RealtimeRebuildプラグインのところで「設定」のタブをクリックすると、テンプレート名が一覧表示されます。
その中で、再構築を許可するテンプレートをクリックして選択し、「変更を保存」ボタンをクリックします。
複数のテンプレートの再構築を許可する場合は、Ctrlキーを押しながらテンプレートをクリックします。
なお、テンプレートの中にパスワード等のセキュリティに関する情報が含まれている場合、そのテンプレートはリアルタイム再構築を許可しないでください(パスワード等を見られる恐れがあります)。
例えば、Perl版ダイナミック・パブリッシングも導入している場合、「sqlsub_mysql.php」または「sqlsub_pgsql.php」のテンプレートには、データベースのパスワードが含まれます。
Perl版ダイナミック・パブリッシングもご利用の方は、このテンプレートは必ず再構築を許可しないようにしておいてください。
4.動作のテスト
インストールが終わったら、動作をテストしてみます。
まず、「3.リアルタイム再構築を許可するテンプレートの設定」の手順に沿って、メインページのリアルタイム再構築を許可します。
次に、インデックステンプレートを1つ新規作成します。
そして、メインページのテンプレートをPHP化していない場合は、以下のタグを入れます。
<a href="<$MTRealtimeRebuildLink tmpl_name="メインページ"$>">MainPage</a>
<a href="<$MTRealtimeRebuildLink tmpl_name="メインページ" tmpl_type="index"$>">MainPage</a>
また、メインページのテンプレートをPHP化している場合は、以下のタグを入れます。
<a href="<$MTRealtimeRebuildPHPLink tmpl_name="メインページ"$>">MainPage</a>
<a href="<$MTRealtimeRebuildPHPLink tmpl_name="メインページ" tmpl_type="index"$>">MainPage</a>
テンプレートを保存して再構築した後、できたページを開くと、「MainPage」のリンクが表示されます。
そのリンクをクリックして、メインページがその場で再構築されて表示されれば、動作はOKです。




![Hardcore Will Never Die, But You Will [Disc 2] Hardcore Will Never Die, But You Will [Disc 2]](http://userserve-ak.last.fm/serve/34s/71241534.jpg)
![Hardcore Will Never Die, But You Will [Bonus Tracks] Hardcore Will Never Die, But You Will [Bonus Tracks]](http://userserve-ak.last.fm/serve/34s/67192634.jpg)
![Hvarf-Heim (Hvarf) [Disc 1] Hvarf-Heim (Hvarf) [Disc 1]](http://userserve-ak.last.fm/serve/34s/37517227.jpg)




コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。
以前フォームメールの件でお世話になったしきだといいます。
さて、MT4.1でリアルタイム再構築を導入したところ、システムログに
RealtimeRebuild : Can't load blog.dat file : Can't call method "NoLocking" on an undefined value at /domain/domain/home/admin/public_html/mt/plugins/RealtimeRebuild/RealtimeRebuild.pl line 268.
というエラーが記録されます。
ちなみに作成されたmod_infoフォルダのパーミッションは707、blog.datのパーミッションは644で作成されておりました。
動作には支障ないのですが、原因がつかめません。どのようなことが考えられるでしょうか?
>しきだ博紀さん
こんにちは。
その件はこちらでも把握しています。
修正版を近日公開しますので、しばらくお待ちください。
MT3.3以前の時代に開発されたRealtimeRebuildプラグインは、
MT.4.2ではそのまま使うことはできない、ということになりましょうか?
>中村 ミノルさん
こんにちは。
MT3.3時代の旧バージョンは、MT4.2で動作確認していません。
ただ、旧バージョンは月別カテゴリーアーカイブ等のMT4の新機能には対応していませんので、MT4.2対応のものをお使いください。
藤本様
本件承知しました。
>>中村 ミノルさん
>こんにちは。
>MT3.3時代の旧バージョンは、MT4.2で動作確認していません。
>ただ、旧バージョンは月別カテゴリーアーカイブ等のMT4の新機能には対応していませんので、MT4.2対応のものをお使いください。
当ブログにおいて,年別と年度別は日別・月別と違うテンプレートを用いています。
年度別は,プラグインによって実現しております。
http://code.as-is.net/public/wiki/FiscalYearlyArchives.ja_JP
リアルタイム再構築プラグインの関係か,
年度別に,日別・月別のテンプレートが利用されます。
(年別は指定した物になる。)
これは,プラグインとプラグインから来るバグだと思われます。
対処できるのであれば,ヒントでもいいので教えてください。
>なるよしさん
こんにちは。
ご指摘の件ですが、リアルタイム再構築プラグインの不具合です(MT標準以外のアーカイブを想定していません)。
今後のバージョンアップで対処したいと思いますが、申し訳ありませんが時期は確約できません。
カテゴリー年度表示はうまく表示されています。
もしかすると,FiscalYearlyプラグインのバグかもしれません。
こちらで調節してみます。
藤本様
お世話になります。
つい先日、MTOS活用テクニックを購入させていただきました井上と申します。
現在、MTに検索機能を実装しようと藤本様の書籍を勉強して追ったのですが、送信ボタンを押した後に検索結果画面にはタイトルにあります
テンプレートを読み込むことができませんでした。
at lib/RealtimeRebuild.pm line 63
というエラーが表示されて、解決方法が見つかりません・・・。
・テンプレートをUTF-8保存
・RealtimeRebuildで、設定対象テンプレートは一つのみ
というところは再確認しております。
原因が分かりますでしょうか?
お忙しいところ申し訳ございませんが、ご教授いただければと思います。
よろしくお願いいたします。
>テンプレートを読み込むことができませんでした。
>at lib/RealtimeRebuild.pm line 63
私の場合は、検索フォームのリスト5.23 下から5~6行目に tmpl_type="index"を加えると直りました。
" />
>井上様
拙著をお買い求めいただき、ありがとうございます。
ご質問の件ですが、インデックステンプレート等などのテンプレートモジュール以外のテンプレートに、読み込もうとしたテンプレートモジュールと同じ名前のものはないでしょうか。
ちなみに、MTの標準のテンプレートセットだと、「検索結果」という名前のシステムテンプレートがあります。
RealtimeRebuildプラグインで読み込むテンプレートモジュールには、「検索結果」という名前は使わないでください。
藤本様
お世話になります。
すみません、先ほどコメントしました井上です。
search_formの、検索結果表示のテンプレートの名前が違ってたのが原因だったようです。
自己解決致しました。
今後ともよろしくお願いいたします。
はじめまして。
申し訳ございません、使い方が良くわからないので教えていただければ幸いです。
3「リアルタイム再構築を許可するテンプレートの設定」
の作業の後、次にどのような作業をすれば実際に使えるのでしょう?
movabletype.jpサイトでは、
「リアルタイム再構築するためのタグをテンプレートに追加します。」とあります。
このタグとは、設定されたプラグインのリソースをクリックすると表示されるタグ一覧のことでしょうか?
4.動作のテストはできました。
以上、お手数ですがよろしくお願いいたします。
>さまんささん
こんにちは。
ご質問の件ですが、具体的にどういった用途で、このプラグインを使おうと思ったのでしょうか。
それによって、インストール後の作業はいろいろです。
ちなみに、「ブログの各ページを、アドレスをそのままで、動的に再構築できるようにしたい」という用途だと、このプラグインではありません。
「Perl版ダイナミック・パブリッシング」をご利用ください。
http://www.h-fj.com/blog/mtplgdoc/perldynamic.php
>ご質問の件ですが、具体的にどういった用途で
お忙しいところ申し訳ございません。
MTトップページ(インデックステンプレート)へアクセスがあった時に再構築されるように使おうと思いました。
本来は、mt Rebuildを使い、CRONで自動再構築しようと思ったのですが、MT4.×では動かないということで、いろいろ探し、たどりつきました。
>さまんささん
こんにちは。
ご希望の用途なら、Perl版ダイナミック・パブリッシングをご利用ください。
壱さま
ありがとうございます!
使い方がちょっと違っていたのですね。わかりました。。
Perl版ダイナミック・パブリッシング使ってみます!
いつもページを拝見して勉強させていただいています。
PHP化したページにリアルタイム再構築プラグインを設置してみたのですが、エラーがでてしまい、解決できずに困っています。
ご教授頂けたらと思います。宜しくお願い致します。
動作テストの段階でメインページの確認をしたところ以下のようなエラーになってしまいます。
Warning: include(/path/rcache/242d83e8572fd4314947b0c7efe12b0c.php) [function.include]: failed to open stream: No such file or directory in /path/mt-realtime-rebuild.php on line 144
Warning: include() [function.include]: Failed opening '/path/rcache/242d83e8572fd4314947b0c7efe12b0c.php' for inclusion (include_path='.:') in /path/mt-realtime-rebuild.php on line 144
MT4.261に設置しています。
どうぞ宜しくお願い致します。
>らでぃあさん
こんにちは。
「ファイルが読み込めない」というエラーですので、以下のことを確認してみてください。
1.ブログの出力先ディレクトリに「rcache」というディレクトリが存在しているかどうか
2.rcacheディレクトリに、CGIから書き込みができるように、適切なパーミッションが設定されているかどうか(「757」や「707」など)
ご返信ありがとうございます。
>2.rcacheディレクトリに、CGIから書き込みができるように、適切なパーミッションが設定されているかどうか(「757」や「707」など)
rcacheは存在しており、
rcacheディレクトリのパーミッションは777や707、757と変更して試してみたのですが結果は同じで、
rcacheの中にファイルが生成されていないようです。
ディレクトリは空になっておりました。
考えられる原因がありますでしょうか?
お手数かと思いますがどうぞ宜しくお願い致します。
>らでぃあさん
こんにちは。
申し訳ありませんが、いただいた状況だけでは、プラグインが動作しない原因は不明です。
こんにちは。
プラグインをインストール後、上記に記載の通り動作のテストを行いました。
<a href="<$MTRealtimeRebuildLink tmpl_name="メインページ" tmpl_type="index"$>">MainPage</a>
から飛ぶリンク先には情報が正しく表示されているのですが、実際再構築をしたいメインページには最新の更新情報が表示されない現象が起こっております。
ちなみに更新したエントリーはマルチブログ構築での日時指定投稿です。
疑問なのですが、、、、
もし日時指定投稿に対応していないのであれば動作テストにも
正しく表示されないと思うのですが、そうではないのは何故でしょうか?
お手数かと思いますがどうかご返答宜しくお願い致します。
>ハスキーさん
こんにちは。
状況を整理すると、以下のようになっているということでしょうか。
1.メインページのテンプレートで、リアルタイム再構築のテストを行った。
2.リアルタイム再構築したメインページには、日時指定投稿したブログ記事が表示された。
3.通常の方法で再構築したメインページには、日時指定投稿したブログ記事は表示されていない。
こちらで試してみた限りでは、日時指定したブログ記事で、かつまだ指定の日時になっていないブログ記事は、リアルタイム再構築の結果には出てきませんでした(もちろん、通常の再構築の結果にも出てきませんでした)。
申し訳ありませんが、そちらの現象の原因は不明です。
なお、リアルタイム再構築プラグインは、日時指定投稿については何も行いません。
先日、MTOS活用テクニックを購入させていただきました。
とても参考になっていろいろ楽しんでます。
2週間程いろいろ試しましたが出来ないことがあり、
一つだけ教えて頂きたいことがありコメントさせて頂きました。
携帯サイトでテンプレートを作成し、文字コードも携帯サイトにあわせて、SHIFT-JISにプラグインにて変更しまたしたが、複数検索がどうしてもエラーがでます。
何かいい方法は御座いませんでしょうか?
エラー内容を載せておきます。お時間がある時で結構ですので
申し訳御座いませんが宜しくお願い致します。
An error occurred
Invalid request: corrupt character data for character set UTF-8
MTのバージョンは下記の通りです。
Movable Type version 4.23-en
>hiroさん
こんにちは。
ご希望のようなことを行うには、検索を行う前に、送信された文字列の文字コードを、ShiftJISからUTF-8に変換する必要があります。
試してはいないですが、小川宏高氏が作られたMT-I18Nプラグインを使って、文字コードを変換してから、検索を行うようにすれば良いと思います。
http://code.google.com/p/ogawa/wiki/MTI18N_Plugin