RebuildIndexFilter プラグイン v0.02
先日公開した「RebuildIndexFilter プラグイン」をバージョンアップしました。
改善点は次の通りです。
- 本格版で複数のイベントを指定できるようにしました
- スクリプトファイルの変更に対応できるようにしました(本格版・簡易版)
- 簡易版のプラグイン名を RebuildIndexFilter Lite に変更しました
プラグインは下記のページよりダウンロードしてください。
アドバイスくださった壱さん、およびご要望くださった bzbell さん、ありがとうございました。
本格版のイベント複数指定は次のように変更しました。
変更前
変更後
簡易版は、MTIgnore タグを複数設定すれば同じ効果があります(多分)。
- Movable Typeの再構築コストを下げる「RebuildIndexFilterプラグイン」バージョンアップ
- TwitCommentプラグイン v0.04
- TwitCommentプラグイン v.0.22
- TwitCommentプラグイン(Movable Type 4.x対応)
- ArchivePathSelector プラグイン v0.10
- PageButeプラグインで分割したページの文字コードを変更する方法
- CharsetEncoder プラグイン v0.10
- CharsetEncoder プラグイン v0.05
- CharsetEncoder プラグイン v0.04
- Movable Typeのウェブページの出力を制御する「PagePublishControllerプラグイン」バージョンアップ
- CharsetEncoder プラグイン v0.03
- CharsetEncoder プラグイン v0.02
- Movable Type のインデックステンプレートの再構築をフィルタリングする「RebuildIndexFilter プラグイン」バージョンアップ
- PostToTwitter プラグイン
- asciiCommentfilter プラグイン
こんばんわ^^
さっそくプラグインを更新してコメントとトラックバックに両方にチェックして様子を見たところ、コメント投稿されたにも関わらずテンプレートが再構築されてないようです。
- 追加された mt_template_ext テーブルを確認したところ、template_ext_template_id に目的のテンプレート ID のレコードは追加されてましたので、単純に rebuild_index_filter コールバックが 0 で返ってるように見受けられました。 ※スクリプト名称とマッチしてないのか、再構築イベントとマッチしてない!?
- また、違ってたらごめんなさいなのですが、template_ext_rebuild_event には 'comment' しかなく、'ping' は追加されてなくっても問題ないでしょうか。
以上、お手数ですがよろしくお願い致します。
いつもカスタマイズではお世話になっております。
さっそく「RebuildIndexFilter」を試させていただきました。
当方はブログを投稿する際、ほとんどが指定日投稿なのですが、
指定日投稿の場合、このプラグインで「ブログ記事の投稿/編集」でチェックしたものが再構築されませんでした。
なにか原因等は考えられますでしょうか?
よろしくお願いいたします。
>bzbellさん
こんばんは。
ご質問の件で確認ですが、テンプレート編集画面の「再構築イベント」で複数の項目をチェックして一旦保存した後、再表示された画面にはチェックした項目がそのまま表示されていますでしょうか(「すべて」をチェックした場合を除く)。
チェックした項目が反映されていない場合、0.03(下記)を作成しましたので、該当のテンプレートのチェックを一旦外して保存し、再度複数項目をチェックしてみてください。
http://www.koikikukan.com/archives/download/plugin/RebuildIndexFilter/0.03/RebuildIndexFilter.zip
また、
1ですが、スクリプト(mt.cgi/mt-comments.cgi/mt-tb.cgi)の名称は変更されてますでしょうか?
2は問題ありです。チェックした項目が正常に保存されていません。実際には「comment,ping」という形式で保存します。
>showBOOさん
こんばんは。
ご質問の件ですが、このプラグインは管理画面やコメント・トラックバックで起動されたCGIのスクリプト名(mt.cgi/mt-comments.cgi/mt-tb.cgi)を元情報にしているので、バックグラウンドで起動した場合にはスクリプト名が取得できないのが原因と思われます。
別途検討致します。
さっそくの返答ありがとうございます。
> テンプレート編集画面の「再構築イベント」で複数の項目をチェックして一旦保存した後、再表示された画面にはチェックした項目がそのまま表示されていますでしょうか(「すべて」をチェックした場合を除く)。
はい。コメント、トラックバック共にチェックされています。
> ・・・名称は変更されてますでしょうか?
あ・・・変更してます (; ̄∇ ̄A
試しに 0.03 で確認してみますね。
度々すいません。
ver 0.03 を試したところ、データベース中には comment, ping と両方かきこまれました。再構築はされませんでした。
プラグインの実行ログを取得したところ、rebuild_index_filter 内の $rebuild_event が (comment,ping) 時において、$script の値は mt-comment.cgi ではなく mt.cgi でコールバックされてるようです。
結果、$comment_script にマッチングしないために再構築されてないようです。
以上ご報告まで (>∀< )
>bzbellさん
こんばんは。
すいませんが、こちらの環境(ローカルPCおよびさくらインターネット)で動作確認した限りでは、$script には mt-comments.cgi や環境変数 CommentScript で変更した CGI ファイル名が設定されるため、再現が困難です。
補足ですが、このプラグインは次のような制御を行っています。
$script の値が mt.cgi(AdminScriptの値)であれば、ブログ管理画面からの操作と認識して、実行した query に'comment' が含まれていればコメント編集とみなして、再構築イベントに'comment'が設定されていれば 1 を返却します。query に'ping' が含まれていればトラックバック編集とみなして、再構築イベントに'ping'が設定されていれば 1 を返却します。
$script の値が mt.cgi(AdminScript)でなければ、次の制御に移行し、$script の値が mt-comments.cgi(CommentScriptの値)であればコメント投稿とみなし、再構築イベントに'comment'が設定されていれば 1 を返却します。トラックバック受信時もこれとほぼ同じ制御です。
頂いたコメントで「$script の値は mt-comment.cgi ではなく mt.cgi」ということなので、$ENV{'SCRIPT_NAME'} (実行した CGI プログラムのルートディレクトリ以降のパス情報)に mt.cgi(AdminScriptの値)が含まれているということになります。
こちらでは「既定のブログ」や当ブログのテンプレートセットのコメントフォーム、具体的には、4.2 標準のコメントフォーム(コメントフォームの form 要素の action 属性に CommentScript に対応するファイルが設定されている)で投稿したものでしか、コメント投稿による再構築を確認しておりません。
的外れかもしれませんが、上記のようなコメントフォームでない(?)場合、うまく $script が取得できていないのかもしれません。
それではよろしくお願い致します。
おはよございます^^
原因!? が分かりました。
どうやらコメントの即時公開設定に関連してるようです (>∀< )
投稿コメントの「即時公開あり」だと $script には mt-comment.cgi が入っており再構築も行われました。
ですが、「即時公開なし」設定だと $script には mt.cgi が入ってくるようです。
以上ご連絡まで。
早々のお返事ありがとうございます。
>バックグラウンドで起動した場合にはスクリプト名が取得できないのが原因と思われます。
了解しました。
一端プラグインを無効にしたいと思います。
指定日投稿でも有効になるよう、ご検討頂けたらと思います。
>bzbellさん
こんばんは。
1のコメントに書かれていた「コメント投稿の不具合」ではなく、「コメント公開時の不具合」ということで理解致しました。
バージョンアップ版をエントリーしましたのでお試しください。
それではよろしくお願い致します。