2006年8月13日
従来版をFlash Player 9に対応させました。
2006年8月11日
Flashを使わずに、JavaScriptから指定日投稿を実行するプラグインも公開しました。
Movable Type 3.1xには、エントリーの投稿を予約しておいて、指定した日に投稿する「指定日投稿」という機能があります。
ただ、Movable Typeのヘルプでは、指定日投稿は「cron」と組み合わせて使うという記述があります。
※cron=UNIXの機能の1つで、定期的に何らかの処理を行うもの
ところが、レンタルサーバーでは、cronを使うことができないところも少なくありません。
例えば、当方はロリポップを使っていますが、ロリポップではcronは使うことができません。
cronを使えないために、指定日投稿をあきらめたという方も、結構いらっしゃるのではないかと思います。
そこで、cronの代わりに、Blogの読者の方々がアクセスしてきたときに、指定日投稿を行うという仕組みを考えてみました。これなら、cronを使うことができなくてもOKです。
なお、動作原理上、指定日時ぴったりに投稿が行われることはほとんどなく、ある程度のタイムラグが生じます。
また、誰かがBlogにアクセスしてくれないと、投稿が行われないことになります。アクセス頻度の低いBlogや、アクセスが少ない時間帯(深夜など)では、なかなか投稿が行われないこともあり得ます。
利用手順は以下の通りです。
必要なファイルのダウンロードと解凍
まず、以下のリンクをクリックしてファイル一式をダウンロードし、そのファイルを解凍しててください。
プラグインの継続的な開発やサポートのために、プラグインをご利用された方は、ドネーション(寄付)を行っていただけると幸いです。
ドネーションの方法は、こちらのページをご参照ください。
また、このプラグインの他にも、いくつかのプラグインを配布しています。
配布中のプラグインは、Movable Type Plugin Directoryのページをご参照ください。
Movable Typeのプラグイン開発等のドキュメント「Movable Type Developer's Guide Volume 1」も販売しています。
ご自分でプラグインを作ってみたい方に、ぜひお勧めしたい一冊です。
詳細は特設ページをご覧ください。
なお、「mt-period.cgi」の先頭にParlのパスを指定する行があります(#!/usr/local/bin/perl)。
これはお使いのサーバーに合わせて変更してください。
ファイルのアップロード
zipファイルを解凍すると、4つのファイルができます。以下のようにアップロードしてください。
| ファイル名 | アップロード先 | パーミッション |
|---|---|---|
| mt-period.cgi | MTのディレクトリ | 755 |
| period.swf | MTのディレクトリ | 644 |
| period-last.txt | MTのディレクトリ | 646 |
| URLEncodeContainer.pl | pluginsディレクトリ | 644 |
「MTのディレクトリ」は、Movable Typeをインストールしたディレクトリ(mt-xxx.cgiやmt.cfgがあるディレクトリ)を指します。
また、「pluginsディレクトリ」は、MTのディレクトリの中にある「plugins」ディレクトリを指します。
Flashの表示
ご自分のBlogに、アップロードしたFlashを表示するためのHTMLを入れます。
表示先のテンプレートを開き、Flashを表示したい位置に以下を追加してください。
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,79,0" id="period" width="80" height="15"> <param name="movie" value="<$MTCGIPath$>period.swf?url=<MTURLEncodeContainer><$MTCGIPath$></MTURLEncodeContainer>"> <param name="bgcolor" value="#FFFFFF"> <param name="quality" value="high"> <param name="loop" value="false"> <param name="menu" value="false"> <param name="scale" value="exactfit"> <param name="allowscriptaccess" value="always"> <embed type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" width="80" height="15" name="period" src="<$MTCGIPath$>period.swf?url=<MTURLEncodeContainer><$MTCGIPath$></MTURLEncodeContainer>" bgcolor="#FFFFFF" quality="high" loop="false" menu="false" scale="exactfit" swLiveConnect="true" allowScriptAccess="always" ></embed> </object>
なお、上記のHTMLは、表示頻度の高いテンプレートに入れることをお勧めします。
一般的なBlogでは、メインインデックスと個別アーカイブの表示頻度が高いと思われますので、それらのテンプレートに入れると良いでしょう。
日時の指定
ここまでの作業を行うと、これ以後は指定日投稿を行うことができるようになります。
エントリーの入力の画面で「作成日時」の欄を未来の日時にし、その上の「投稿の状態」の欄を「指定日」にして、エントリーを保存します。
2005年5月18日追加
CGIの動作
このプログラムでは、Flashから「mt-period.cgi」というCGIを起動し、そのCGIから指定日投稿のプログラム(MTのrun-periodic-task)を実行するという仕組みをとっています。
ただ、run-periodic-taskは結構重い処理で、頻繁に実行するとサーバーに負荷がかかる恐れがあります。
そこで、直前に実行されてから10分以上経過していないときは、実行しないようにしています。
Flashの表示
Flashでは、このプログラムの動作状況を以下のように表示するようになっています。| 表示 | 内容 |
|---|---|
| 黄色の●に「Waiting」 | mt-period.cgiを実行して、その結果が返ってくるのを待っている状態。 |
| 緑色の●に「Worked」 | 指定日投稿のプログラムが実行された状態。 |
| 青色の●に「Passed」 | 直前に指定日投稿のプログラムを実行してから10分経過していないので、実行をパスした状態。 |










コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。
こんばんわです。
表示されるFlashの英語の意味教えていただけると助かります。
3種類ぐらい今の所見てますが。
>みよたんさん
こんにちは。ご利用ありがとうございます。
ご質問の件について、エントリーに書き加えておきました。
指定日投稿、「ほぼ」でも できるなんて嬉しいです。
早速やってみようと思います。
ヽ(^◇^*)/ ワーイ できました。
普通に新規投稿しようと思ったら 高確率で 500エラーになってしまうんですが
これ使うと、ちゃんと トラックバックもとばせてるし
いいですね。感激です♪
こんちわー。
こりゃ、また、激しく便利なツールを・・・ありがとうございます。^^
今晩にでも試してみまーす。
>Borderさん
こんにちは。
「ほぼ指定日投稿」をご利用いただきありがとうございます。
そちらのBlogなら、うちよりアクセスが多いので、より指定日投稿に近くなると思います。
こんにちは、はじめまして。
本日、このプラグインを導入させていただきました。
とっても、重宝しそうな予感大です。
cron設定できないので、半分諦めてた部分でしたのでとっても嬉しいです。
run-periodic-tasksのパーミッションって、指定日投稿の動作に関係ありますか?
なにをどうやったら、動くようになったのか手順確認せずにやっていたら、最終的に動くようになりました。
私の設定ミスだっただけなのかもしれませんが、有り難うございます。
とっても重宝いたしております。
こんばんは。
コメントありがとうございました。
いやロリポはcron使えなくて参っていたんです。
本当流石です。
ありがとうございました。
こんにちは。
便利な機能と思い、こちらのCGIを私のブログにも設置させて頂きました。
ですが、プラグインの方がエラーを起こしているようで、そのままでは稼動しませんでした。
Flash呼び出しURLを修正し、一応動くようになりました。
以下、エラーログです。
Plugin error: /省略/plugins/URLEncodeContainer.pl Can't locate object method "new" via package "MT::Plugin" at /省略/cgi-bin/weblog/plugins/URLEncodeContainer.pl line 9. Compilation failed in require at /省略/cgi-bin/weblog/lib/MT.pm line 297.
原因は何なのでしょうか?
度々済みません。
こちらのTBを参考にプラグイン内を修正したところ、エラーは発生しなくなりました。
これで、気兼ねなくほぼ投稿が出来ます。有り難う御座いました。
はじめまして。
いつも参考にさせて頂いています。
今回のツールもとってもありがたいです。
ありがとうございました。
>スマッシュさん
ご利用ありがとうございます。
ほぼ指定日投稿があれば、あらかじめエントリーを書き溜めておくことができるので、便利だと思います。
もっとも、現在ではサーバーをXREAに移転してcronを使えるようになったので、自分ではこのカスタマイズは不要になってしまいました(笑)。
こんにちは。初めまして。
ほぼ指定日投稿使わせてもらいました。
@niftyのラクーカンでも動きました。
ありがとうございます。
>kenさん
こんにちは。
ラクーカンでの動作報告をいただき、ありがとうございました。
無事動作できました。
大変便利なツールをありがとうございます
ただ、補足として、プラグインフォルダの中に
「URLEncodeContainer というフォルダを作成した上で」その中に「URLEncodeContainer.pl」を入れてくださいと明示した方が分かりやすいと思います。
……あれ、フォルダの中に入れないと動きませんよね??
MT自体を触りたての私は、ちょっと迷いました
フォルダを作成しないと、 working.... のまま動作しないようですので
>Yuさん
こんにちは。プラグインご利用ありがとうございます。
URLEncodeContainer.plは、pluginsディレクトリにアップロードすれば動くはずです。
当方ではそうしていますし、これまでにもYuさんのような指摘を受けたことはありませんでした。
> URLEncodeContainer.plは、pluginsディレクトリにアップロードすれば
どうやらそのようでした
現状ではフォルダの中に収まっていても問題なく動作するようです。
わたしがよく理解していなかったものと思われます。
大変、失礼いたしました。
今後のご活躍を、お祈り申し上げます。
こんにちは、
激しく便利なので使わせて頂いています。
ありがとうございます。
指定日投稿した場合、PINGが打ててないようですので、
そのような方、お見えになりますか?
私だけでしょうか??
>ブロガさん
こんにちは。
他の方からは、PINGについての問い合わせはありません。
なお、このツールは、MT標準の指定日投稿を呼び出す処理をしているだけです。
PINGが打てないとすれば、MTの指定日投稿のプログラムに不具合があることになります。
ping 打てました。すみません。
四苦八苦していましたが、初期設定ミスでした。
コメントありがとうございました。
大変有益な記事ありがとうございます。
この記事を基にした記事を私のブログに書かせていただきました。
これからも本、ブログともに参考にさせていただきますので、よろしくお願いします♪
初めまして、momoと申します。
「ほぼ指定日投稿」について、ぜひ活用したいと思い、導入しようとしているのですが、以下の部分がよくわからないので躓いています。ご指導いただけましたらうれしいのですが・・・。
この部分です。
ご自分のBlogに、アップロードしたFlashを表示するためのHTMLを入れます。表示先のテンプレートを開き、Flashを表示したい位置に以下を追加してください。
と説明があるのですが、「Flashを表示したい位置」というのがわかりません。
メインページと個別アーカイブページのどこに追加すればよいでしょうか?
大変お手数をおかけいたしますが
ご指導よろしくお願いいたします。
>momoさん
こんにちは。
ご質問の件ですが、サイドバーの最後に追加すると邪魔にならなくて良いと思います。
メインページと個別アーカイブページのテンプレートの中でサイドバーの部分を探して、その最後にFlashのHTMLを追加します。
ご回答ありがとうございます。
FlashのHTMLはうまく追加できたのですが、
●(黄色)のまま変化がありませんし、
一気にすべて公開されてしまいます。
どこに問題があるのでしょう?
>momoさん
こんにちは。
まず、「●」が黄色のまま変化しないのは、mt-period.cgiが上手く動作していないことが原因だと思われます。mt-period.cgiや、period-last.txtのパーミッションを確認してみてください。
また、一気にすべて公開される原因としては、エントリーを投稿する際に、エントリーの日時を未来の日時にしていないことが考えられます。
こんにちは、momoです。
お返事ありがとうございます。
一気に公開されるのはご指摘の通り、エントリーの日時を未来の日時にしていなかったことが原因だと思います。
パーミッションを確認しましたがそれぞれ指定通りで間違いありませんでした。
一点気がかりなのが、次の箇所なんです。
なお、「mt-period.cgi」の先頭にParlのパスを指定する行があります(#!/usr/local/bin/perl)。
これはお使いのサーバーに合わせて変更してください。
というところなんですが、
ロリポの場合、【 Perlパス 】 /usr/bin/perl となっているので、この/usr/bin/perlを#!/usr/local/bin/perlの部分と置き換えるということでよいでしょうか?
お手数をおかけし恐縮ですが、
よろしくお願いいたします。
>momoさん
こんにちは。
「#!/usr/local/bin/perl」を「#!/usr/bin/perl」に書き換えてみてください。
こんばんわ、momoです。
うまくできました!
ほんとうにありがとうございました!(^^)
はじめまして。tacasiと申します。
「ほぼ指定日投稿」を導入して1か月になります。
質問なのですが、
最近、自分でアクセスしても、
指定日投稿がされていたり、されていなかったり、
動作が不安定になっていました。
よく見てみると、「●」が真っ黒でクリックすると、
「ムービーをロードできません」
と出ました。
最近変わったことといったら
FlashPlayerをver.9にしたことだけです。
FlashPlayer9が原因なのでしょうか。
>tacasiさん
こんにちは。ご利用ありがとうございます。
調べたわけではありませんが、Flash Playerをバージョンアップしてから動作が不安定ということは、そのことに原因がありそうです。
時間ができたら調べてみます。
pingの送信ができません。
コメントは全て読み、検索もしたのですが、
解決できませんでした。
状況
・サーバーは、ロリポップです。
・通常の投稿では、PING送信ができています。
・指定日投稿によって、記事は投稿されています。
・ログ(システムの利用記録)に、記録は何も、されていません。
自己解決を目指しましたが、一週間たっても、分かりません。
解決のヒントをいただければ、大変うれしいです。
>ターヒさん
こんにちは。
このFlashは、MTの指定日投稿のプログラムを呼び出す処理をしているだけで、Flash自体がpingを送信しているのではありません。
ということで、pingが打てないとすると、MTの指定日投稿に何か問題があることになります。
壱さん、こんにちは。
ターヒです。
アドバイスありがとうございます。
以前のコメント「19、20」にもありましたが、
「MTの指定日投稿に何か問題」しかないと捉えて、
また試してみたいと思います。
カテゴリーへのトラックバックをはずすと、
ping送信できるようになりました。
ping送信がエラー(失敗)になってただけ、
以前の指定日投稿も、通常の投稿のように、
きちんとpingを送信されていました。
解決しました。ありがとうございました。
30. tacasiさんと同様なのですが、Flashがロードできなくなっています。他にお困りの方いないのかな?
当方もFlashを最新にバージョンアップしたところロードできなくなりました。
ソースでFlashのバージョンを指定していますが、そこに何かあるんでしょうかね?ちょっと困っています。
>mmiさん
こんにちは。プラグインご利用ありがとうございます。
Flashを使わずに、JavaScriptで処理するものを作ってみましたので、後日アップします。
動作しない原因が判明し何よりです。解析本当にありがとうございます。
ところで、Flash9に対応したとのことですが、period.zipの中の
period.swfは、2006/08/05のタイムスタンプのままのようで、こちらをアップロードしても現象は変わりませんでした。
>mmiさん
こんにちは。
アップロードのミスをご指摘いただき、ありがとうございました。
正しいものに差し替えましたのでご確認ください。