更新Pingを受けて自動RebuildするCGI
あるBlogの更新時に、別BlogのIndexもRebuildしたい。
このBlogでも「別Blogでリンク集」にもあるとおり、別のBlogにしたリンク集の内容をMTOtherBlogプラグインを利用して表示しているのだが、そちらを更新しても、人生迷い箸側のインデックスがリビルドされるまで反映されない。
そこで、更新Pingを受けて自動的にインデックスをRebuidするCGIを作成しました。
up-rebuild.zip (Ver0.9 size=1.02KB)
設置方法は、up-rebuild.cgi を編集し、適切なperlのパス、$MT_DIRにmt.cgiのあるディレクトリ、$blog_idに自動リビルド対象のBlogのidを指定。変更したファイルを、CGIが実行できるディレクトリに設置後、適切にパーミッションなどを設定する。
【2006/1/24 追記】
MT3.2以降では mt.cfg がないため、うまく動作しません。MT3.2 以降でお使いの方は up-rebuild.cgi を編集する際に、27 行目あたりにある「mt.cfg」という文字列を「mt-config.cgi」に書き換えてください。
あとは、更新するBlog(自動リビルドのトリガになる側)で、「BLOGの設定」→「ウェブログの設定」の「広報 / リモートインターフェイス / トラックバック」に、設置したup-rebuild.cgiのURLを入力すれば完了。
中身を簡単に説明。
CGIにアクセスがあったら単純に、指定されたBlogのインデックスをリビルドしてXML-RPCのレスポンスを返すだけ。
レスポンスのフォーマットについては下の記事を参考にさせていただきました。
NDO::Weblog Weblogs.Com Ping の Perl による実装
上の記事を参考にしてXMLRPC::Transport::HTTPを使おうかとも思ったんですけど、別にPingで通知される情報を利用するわけではないのでやめておきました。
11月 28th, 2003 at 11:57:31
別BlogのPingでMainIndexをリビルドするCGI
流石、男爵です。早くもCGIを作成してくれました。 これで、PhotoBloggerみんながハッピーになれることでしょう。 狙いは 手順は以下の通り。 up-rebuild.cgiをダウンロードし、エディタでMTの
11月 28th, 2003 at 17:35:35
こんにちは。
これって、モブログを別ブログにしてる人にも有効ですよね。苦手といいつつ、プラグインとか入れてるような人なら、SSIにするより、やりやすいかもしれませんね。
うちはPHPにしてしまったけれど、これがあったら、きっと使わせてもらってたと思います。
うーん、使いたくなってきた・・・。なんか、いいアイデアはないかなあ。
11月 28th, 2003 at 18:29:04
そうですね。有効だと思います。
実は僕もSSIで解決しようかとも思ったんですけど、テンプレート直したり拡張子を直したりというのが面倒だったので(苦笑)
あと、本当の作成動機はブログドロイドさんの記事
http://www.2-1b.com/archives/000024.html
を参考に、MTOtherBlogプラグインを使って別Blogの画像を表示している友人からの熱い要望だったりします。自分では「ま、リビルドすりゃいいや」なんて思ってたので。:p
12月 22nd, 2003 at 23:18:09
MTテンプレート修正
ホーム、カテゴリアーカイブとマンスリーアーカイブを修正。…
1月 4th, 2004 at 21:27:51
別ブログの最新タイトルを表示
久しぶりのMTネタです。私は読書感想のBLOGを他に2つ立ち上げていて,その最新5件を別テンプレートに書き出させIFRAMEでこのTOPページに表示させていたんですが,どうも気に入らなくて
1月 12th, 2004 at 14:51:12
トップページに更新日を表示
前々からやりたかった、更新日の表示をトップページにつけました。これがあれば、どこのページが更新されたか一目瞭然でしょ? このサイトは、複数のblogをMTOtherBlogプラグインで寄せ
2月 7th, 2004 at 4:30:06
無言さんのひとこと
別Blogを使用して、 右側にひとことを乗せるようにしてみました。 参考サイト: http://www.2-1b.com/archives/000024.html 簡単な流れを書くと・・ 1.新しいウェブログを作成する。 2.MTOtherBlog (v 0.25)
3月 2nd, 2004 at 13:07:42
Movable Type 改造とプラグイン覚書
・今さらながら、このサイトを構築するのに使っているMovable Typeをアップデート。 ・新ドメインの新サイト制作中(引越しではありません) で、覚書とか。…
3月 3rd, 2004 at 1:11:54
MovableTypeプラグイン
MovableTypeプラグイン 人生迷い箸: 更新Pingを受けて自動RebuildするCGI http://valium.oops.jp/archives/000093.html コメントを書き込んだ人(訪問者)に、追記されたコメントを通知するプラグイン …
5月 3rd, 2004 at 1:09:48
2つのblogを一つに
随想雑録譚とスケート虎の穴、随想雑録譚のほうは一般的な話題、スケート虎の穴はスケート関係の話題を扱っているが、随想雑録譚のほうでもスケート虎の穴のエントリーを表示できないものかと思って色々探してみた。主にググっただけだが(笑) すると松永氏の「ジェームズ…
6月 17th, 2004 at 14:42:27
+Diary:sの自動Rebuild
更新通知をするようにしたけれど。 更新ピングを受けて自動RebuildするCGI …うまく動いてない?…
9月 2nd, 2004 at 13:12:34
野暮な質問で申し訳ございません。
例えば一つのmt.cgiで3つの並立するブログを作っていた時、どれか一つを更新すると他の2つもリビルドをかける設定ってありますか?
9月 2nd, 2004 at 13:49:15
katzさん、こんにちは。
今のところup-rebuild.cgiを改造するか、あるいはファイル名かフォルダを変更してup-rebuild.cgiを2つ設置し、それぞれのBlogをリビルドするしかありません。
とりあえず、いちばん簡単な2番目の方法を。
例えばMovableTypeでA,B,CというBlogを作成しており、以下のようになっているとします。
A:blog_id = 1
B:blog_id = 2
C:blog_id = 4
この状況でAが更新されたらBとCもリビルドしたい場合、up-rebuild.cgiのファイル名を変更してそれぞれBとCをリビルドするように修正します。例えばup-rebuild_b.cgiファイル中では「my($blog_id) = “2″;」、up-rebuild_c.cgiファイル中では「my($blog_id) = “4″;」として、それぞれ設置します。
これでAの更新Ping通知先に2つのCGI動作URLを記述すれば、Aを更新したときにBとCが自動リビルドされるようになります。
9月 2nd, 2004 at 17:03:03
早速のご返事ありがとうございます。
ブログごとにcgiを作成する訳ですね。了解です!
2つのブログは文字しか考えていないのでこの方法でいこうかなぁと思います。
もう一つのブログは写真付きを考えているので、表示用にテンプレートを作ってiflameで取り込もうかと現在思案中…
9月 22nd, 2004 at 22:48:34
他サーバーのブログの新着記事をMTotherBlogを使って表示させる方法
製作の依頼があったので無い知恵を絞って力技に出てみました。MTotherBlog…
9月 22nd, 2004 at 22:50:01
他サーバーのブログの新着記事を表示させる方法
製作の依頼があったので無い知恵を絞って力技に出てみました。MTotherBlog…
9月 25th, 2004 at 12:45:25
複数ブログ立ち上げ
お気づきの方も多いと思いますが、9月より実験的に複数のブログを立ち上げております…
10月 14th, 2004 at 23:54:47
複数ブログ立ち上げ
お気づきの方も多いと思いますが、9月より実験的に複数のブログを立ち上げております…
10月 25th, 2004 at 16:04:32
cronが使えなくてもRSSfeedを自動化
MTにRSSを取得、表示できるプラグインがありますが、cronが使えない場合は使えないというか、手動でリビルドまたはコメント、トラックバックがあった時に更新みた…
1月 17th, 2005 at 0:48:27
複数ブログを合体させる。
エントリー3つくらいまとめてupしとります。まとめすぎです。ごめんなさい。 以前…
1月 20th, 2005 at 0:09:46
別ブログへの更新通知
現在狐の巣穴は全部MovableTypeで構築してて、 ブログ3つをこんな感じでわけてます。 1.狐…
3月 15th, 2005 at 16:39:32
連携プレーで行こう!磯野家の真実
久々にムーバブルタイプ関連の使える情報をお届けします。…
7月 14th, 2005 at 21:26:11
別ブログの最新記事タイトルを表示させる方法
実は私(この記事を書いている時点で)MTで3つのブログを運営しています。 そのうちのひとつ、日常の事とちょっとした豆知識を綴っている 「ひだまりのひまわり」の最…
7月 29th, 2005 at 18:32:38
別ブログの情報を表示:MultiBlogプラグイン
あるブログで別のブログの更新情報を表示するのにMTOhterBlogプラグインを…
8月 7th, 2005 at 22:51:39
MTOtherBlogプラグインを導入
今まで本館サイトの更新履歴はCGIを利用して手入力で書いていましたが、なかなか更…
10月 20th, 2005 at 21:55:59
別blogの最新エントリーを表示する
現在メインでやっている読書感想文のブログの記事数が多すぎて、ブログの再構築ができなくなってしまいました。
現在使用しているMobableTypeとい…
10月 30th, 2005 at 13:58:41
こんにちは。
複数あるブログにup-rebuild.cgiを利用させていただこうと思ったのですが、エントリー保存時に「トラックバックか、アップデート情報の送信でエラーがありました 」と表示されて自動更新させたいブログに反映されません。
MT3.2のためmt.cfgがありませんので、27行目のmt.cfgをmt-config.cgiに変えてみたりしたのですが同様の結果です。
更新作業が楽になるこのCGIをぜひとも使いたいと思っていますので、もし何か原因がわかりましたら教えていただけませんでしょうか?よろしくお願いいたします。
環境:
MT3.2
PHPによるモジュール化済み
サーバーはロリポップ
10月 31st, 2005 at 22:36:18
Orieさん、こんにちは。
MTのログに、なにかエラーは記録されておりますでしょうか?
11月 1st, 2005 at 5:08:24
早速のお返事ありがとうございます。
MTのログを見たら原因がすぐにわかりました。
ディレクトリの指定間違いという単純ミスでした。
1週間も悩んでいたので、これでようやくすっきりしました。
本当にありがとうございました。
11月 3rd, 2005 at 2:36:43
複数ブログ間での連携
各コンテンツでデザインが大幅に異なるMT案件。 トップページに新着情報を作る必要…
1月 19th, 2006 at 1:43:17
MovableType3.2アップグレード
3.2はmt.cfgがないのでちょっと敷居が高い感じがします。しかし、メリットも大きいのでアップグレ…
2月 20th, 2006 at 23:48:39
MultiBlog
MT-Wiki MovableTypeのマルチブログ化 † プラグイン(英語圏) MTOtherBlog (v 0.25) MTOther…
3月 21st, 2006 at 10:39:36
別ブログの最新エントリーを表示させてみよう!
┌|゚□゚;|┐ガーン!! タイトル長っ!! ......気を取り直し。w レ…
4月 13th, 2006 at 15:02:21
こんにちは。既に使わせて頂いており、とても助かっております。ありがとうございます。
ただ、伺いたいのですが、
複数のブログの更新時に、その他の1つのブログのIndex以外もRebuildさせる方法はありますでしょうか? ご教授頂ければ幸いです。MTは3.2です。
4月 13th, 2006 at 19:04:26
Mitさん、こんにちは。
Index以外、というのは具体的には何を指していますか?
例えばup-rebuild.cgi 41行目あたりの rebuild_indexesだけでなく、rebuild_entry や _rebuild_entry_archive_type などのビルド処理を追加すればアーカイブなどもリビルドできるんじゃないかと思います。ただしこれらの関数はエントリーを引数に取りますので、簡単には追加できません。アーカイブを全てリビルドするなら話は簡単ですが、負荷を考えると無理だと思いますし・・・・・・。
4月 14th, 2006 at 15:37:38
早速にご回答頂き、ありがとうございました。
説明不足で申し訳ありませんでした。
>Index以外、というのは具体的には何を指していますか?
1エントリー内にMTタグを記述していて、他のブログの更新情報などを表示させています。
(※Process Tagsプラグインというプラグインを利用していてエントリー内のMTタグが有効になっています。)
ここのエントリー記事をup-rebuild.cgiを使って他のブログが再構築したらリビルドしたいと思っています。
>例えばup-rebuild.cgi 41行目あたりの
>rebuild_indexesだけでなく、rebuild_entry や
>_rebuild_entry_archive_type などのビルド処理を追加すればアーカイブなどもリ
>ビルドできるんじゃないかと思います。ただしこれらの関数はエントリーを引数に
>取りますので、簡単には追加できません。アーカイブを全てリビルドするなら話は
>簡単ですが、負荷を考えると無理だと思いますし・・・・・・。
CMSとして利用しており、アーカイブのテンプレートはエントリー・アーカイブとカテゴリー・アーカイブの2つです。
エントリーの数自体も40前後とそこまで多くないのですが、負荷を考えるとアーカイブを全てリビルドするのはやめた方がよいでしょうか?
また、特定のエントリー記事だけ、リビルドすることは可能でしょうか?
どうかよろしくお願い致します。
4月 19th, 2006 at 6:21:01
Mitさん、
アーカイブやエントリ数が少ないということで全リビルド負荷を気にしないのであれば、Line41の
$mt->rebuild_indexes(
のところを
$mt->rebuild(
と書き換えるだけでうまくいくのではないかと思います。時間が取れなくてテストはしてません。
エントリを指定する場合にはもう少し変更が必要になてしまいます。
4月 24th, 2006 at 16:29:13
ありがとうございました。ご指摘通り、
$mt->rebuild_indexes( を
$mt->rebuild( と書き換えましたところ、うまくいきました。
今回は、エントリーを指定せず、この方法で様子を見ようと思っております。
いろいろとご指導下さり、本当にありがとうございました。
4月 28th, 2006 at 14:02:48
Movable Typeの困った事、役立つ情報のリンク集
はじめまして、とても役に立つ情報をありがとうございました。リンクさせていただきました。
5月 3rd, 2006 at 15:27:51
更新履歴
トップの「最近の更新」を表示するのにmultiblogというプラグインを使ってい…
5月 20th, 2006 at 13:47:32
はじめまして、こんにちは。
こちらのup-rebuild.cgi を利用させて頂いている者です。
大変素晴らしいcgiで非常に満足しております。有難う御座いました。^^
一点だけお伺いしたいのですが、新規エントリーした時は、更新pingを送信でき更新が反映されるのですが、既にエントリーされている記事を書き換え再エントリーする時にはpingが送信されません。
再エントリーした時もpingを送信したいと思うのですがどのようにしたら宜しいでしょうか?
御忙しい所申し訳御座いません、ご教授頂けましたら幸いです。
5月 20th, 2006 at 14:06:09
度々すみません、エントリー画面の「トラックバック送信先のURL」にhttp://~up-rebuild.cgiをいれ再投稿したらping送信できました^^;
環境設定のところでは「新規投稿」だけなんですね、失礼致しました。
5月 20th, 2006 at 14:28:23
デュオンさん、はじめまして。
一番簡単なのは一度下書きに戻して保存し、さらに公開にして保存すれば再度更新Pingが送られると思います。あとはエントリー更新後、外部ツールで更新Pingだけ送る方法があります。例えばもしBlogPeople(http://www.blogpeople.net/)をお使いであればBlogPingPingなどの外部ツールを利用するなどですね。
どうしてもエントリー更新時にも更新Pingを自動的に送りたいということであれば、ogawaさんが作成されたUpdate-n-Ping Plugin(http://as-is.net/blog/archives/000976.html)が利用できるのではないかと思います。
6月 12th, 2006 at 1:37:59
他のブログの更新履歴の表示 その2
親サイトである『金持ちサラリーマンへの道』の新着記事紹介欄は、他の関連ブログの新…
6月 29th, 2006 at 17:00:08
お世話になっております。
一点だけ、ご質問がありまして参りました。
ブログは、MTを使っております。
up-rebuild.cgiでping送信の際、indexテンプレート全てではなく、indexテンプレート内にある「テンプレートid=1の、index.html」だけを更新したいのですが、可能でしょうか?
indexテンプレートには、自動的に再構築されるものが数多く設定してあり、index全テンプレートがpingで更新されると、タイムアウトエラーになってしまいます。実際には更新は反映されているのですが、待つ時間が長いのできになります^^;
恐らく、改造しなければならないと思うのですが、可能で御座いましたらご指南の程をお手数ですが何卒、宜しくお願い申し上げます。
6月 29th, 2006 at 20:10:48
デュオンさん、こんにちは。
# rebuild indexes
$mt->rebuild_indexes( Blog => $blog )
or die $mt->errstr;
の部分を、下記のように変更してみてください。
require MT::Template;
my $tmpl_id = 0;
my $tmpl = MT::Template->load($tmpl_id)
or die $mt->errstr;
# rebuild indexes
$mt->rebuild_indexes( Blog => $blog, Template => $tmpl )
or die $mt->errstr;
「$tmpl_id=0;」の 「0」のところは、リビルドしたいテンプレートを指すidに変更してください。テンプレートidの確認方法は、tsupoさんの
http://www.na.rim.or.jp/~tsupo/program/rebuild-tool/
このページの真ん中辺りの説明を参考にしてみてください。説明を勝手に利用してすみません(^^;>tsupoさん
ちなみに動作確認はしておりませんので、申し訳ありませんが自己責任でお願いします。m(_,_)m
6月 29th, 2006 at 23:30:28
エラーなく、正常に動作致しました。
大変お手数お掛け致しました。
有難う御座います。m(__)m
7月 18th, 2006 at 0:24:16
み〜っけ!
探していたMovableTypeのプラグインをついに見つけました! その名はG…
8月 17th, 2006 at 13:24:40
はじめまして。up-rebuildにはとてもお世話になっております。すてきなcgiを本当にありがとうございます。^^
今回、新規エントリーでもリビルドする手だてはないかと探していたところ、こちらでUpdate-b-Pingを知り、少し無理矢理かとも思ったのですが、Update-b-Pingからup-rebuildにPingを送るという手で、望んでいた結果を得る事ができました。
一言お礼を言いたくてコメントさせて頂きました^^
8月 17th, 2006 at 21:35:41
ココットさん、はじめまして。
>望んでいた結果を得る事ができました。
それは何よりです。:)