カツオ少年の「やったね!」勝利宣言

カツオ少年の三部作完結編

複数ブログにわたる運営で、各ブログのエントリ(投稿記事)のみならず、コメントも自動でトップページに表示させる。

カツオ少年のこの念願、今度はうまくいってくれたみたいです。これまで本人がログインしてせっせと再構築してきた手間から逃れられます。これまでにもブログカスタマイズにはそこそこの労力は使ってきましたが、今度のは本当に手間取りました。次期ヴァージョンのMT4を待たねば無理なのかと諦めていました。

以下、ギョカイならぬギョーカイ用語や専門用語が多く、一般の読者をも引きつけられるかどうか、自信は少ないですが、作業録を残してみます。

MTを自動で再構築

要はオーナーたるカツオ少年自身がログインして再構築するのでなく、このサイトに訪れてくれるユーザーがアクセスした時、トップページが自動で再構築される(されている)仕組みにすればいいということです。

「わっしょい! わっしょい!」男衆が叫びながら御輿を動かさなくても、時々、ひっそりと御輿だけがくるんと1回転している仕組みをつくればいい。

前々回、複数ブログにまたがるエントリーの抽出に GlobalListings プラグインをやめて MultiBlog プラグインにしたと記しましたが、これは今回の成功に直接には寄与していません。エントリやコメントの抽出はどちらでも問題なく動いてくれます。カツオ少年は説明の面白さから GlobalListings を選びましたが、あのページ内容とは裏腹に、MultiBlog の方が相当に楽であることは確かです。

ただ、遠回りなように見えて、ブログ開設当初に GlobalListings を利用した経験は大いに役立ちました。

というのも、今回は CGI の設置がメインになるからです。今回、お世話になったのはこちら。

MovableType備忘録: MovableTypeを自動的に再構築する

CGIを設置

ここにはMTを自動で再構築させる方法として2通り掲げられています。カツオ少年も、以前、指定日投稿というのをしたくて、でもそのためには cron の使えるサーバーでないとダメということから諦めたことがありました(ハッスルやロリポではcron は使えないらしいのですが、裏技もあるとか・・・また別途)。

もうひとつが、「トップページへのアクセスをトリガーにして再構築」させる方法です。トリガーとは、引き金、きっかけの意。何となくかっこいいですね。カツオ少年にとっては、持病の慢性痛でトリガーポイントというのを知っていたくらいでしたが、こっちはあんまりかっこよくないです。実は、Multiblog プラグインにも、それらしきトリガー設定があったのですが、こちらは、単にコメント公開を許可制にしている場合のものでした。

さて、ここに書かれているとおり、mt-period.cgi と mt-rebuild.pl を自分のブログに合うよう、少し、編集してサーバーに置きます。以前、GlobalListings でも、更新pingを飛ばすために、人生迷い箸さんの mt-rebuild.cgi をちょこっと編集しました。目指すところは同じなので、名前も似ているんでしょうね。

今回、カツオ少年は最初、このページを一通り読んだだけではうまく頭が回らず、mt-period.cgi だけと思ったのですが、cron を使わない場合でも mt-rebuild.pl が必要です。

どっちにしても perl の分野です。プログラミング言語としてきいたことはあったのですが、カツオ少年にしては「とんでもない世界に足を踏み入れてしまった」と立ちすくみました。18歳まで穏やかな瀬戸内海しか知らずに育ったのに、いきなり太平洋に放り出されてしまった気分。泳げタイヤキ君にも似た心境です。でもそろそろ一本釣り・・・ならぬ、一本立ちしなきゃ。

カツオ少年の目論見は、トップページ(サーバー直下の index.html ページ)のみ再構築されればいいので、 mt-rebuild.pl は次のところを編集。例の、男衆によってかつがれているだけの御輿部分。

指定ブログのインデックス・テンプレートのみ再構築させたい場合

mt-rebuild -mode='index' -blog_id=0 -template='your template name'

あるいは、カツオ少年の直下ブログはそもそもエントリーを置いていないので、ブログごと再構築させてもさほどの負荷はないんだろうと思います。

何だかよく分からないけど

ただ、日曜の一日だけではすんなり動いてくれなかったです。コメントにもたくさんの相談が寄せられています。カツオ少年もどこで躓いているのか、あらゆるケースを想定して必死に考えました。

月曜(昨日)にひとつずつ潰していった中で、意外な試みでうまくゆきました。

-template='your template name'の部分、ここにテンプレート名を書くのですが、最初、index.html ページの名称がデフォルトでそうなっているように、'メインページ'としていました。これを、他にも検索で調べたページを参考に、'MainIndex'と英字表記に変更してみたら(もちろん、MT管理画面の設定の方も)、見事に解決したのでした。

日本語でも問題ないはずで不思議な気はするのですが・・・。多分、これはユーザーの環境に因るところも大きいのでしょう。

以下はチェックポイントです。

  • mt-period.cgi と mt-rebuild.pl は同じ階層に設置したか?
  • パーミッションはOKか?
  • >mt-rebuild.pl内の27行目、mt.cfg ⇒ mt-config.cgiに変更した方が良さそうです
    これは別のもそうだけれど、特に変更せずともOKのはず
  • mt-period.cgi と mt-rebuild.pl のいずれでもそうですが
    スクリプト1行目の #!/usr/bin/perl -wは
    ハッスルでは -wオプションを付けなくても大丈夫でした(Xサーバーがうるさいみたいです)
  • もちろんサーバーによっては
    #!/usr/bin/perl は、#!/usr/local/bin/perl のときもあります
    (ハッスルはどっちでもOKです)
    ・・・このあたりはサーバーの解説ページを参考に。

備忘録さんのページではmt-period.cgi 中、次の条件で30分後に再構築させています。

if ( $nowtime - $lasttime >= 1800 )

テスト中は30秒で試させてもらった後、30分に戻しています。・・・ので、コメント投稿直後にトップページに表示される・・・とまではゆかないですが、30分以内のアクセスで大丈夫のはずです。これで充分です。

スパム対象まで自動表示

隣の画像のように、スパム対象のコメントまできっちりすくい上げて表示してくれるのは正し過ぎるのだけれど、うまくいっている証拠です。ちなみに、なぜか「日曜夜」エントリにだけスパムが繰り返しつくのはなぜだろう? スパム投稿者はロック(非表示)してくれるのだけれど、<スパムがついた>ということは残ってしまう・・・。

どうでしょうか? カツオ少年の高らかな勝利宣言。この日の感激を忘れることはないでしょう。

多分、今回、目指したコメントの自動表示は、このMTの自動再構築によらずとも、別の方法で出来そうな気はします。それでも自動再構築のニーズは多いことでしょう。すこぶる便利で色んなことで使えそうです。

明日からまた羊に戻ります。



 

  Related Entries


Message

メールアドレスが公開されることはありません。