ほぼ指定日投稿(MT5用)

Movable Typeには「指定日投稿」の機能があり、指定した日時に自動的にブログ記事を投稿することができます。
ただし、そのためには指定日投稿のスクリプトを定期的に実行する必要があります。
cronを使えないサーバーだと、スクリプトを定期的に自動実行することができません。

この問題を解決するプラグインとして、「ほぼ指定日投稿」(RunPeriodicTasks)を公開していました。
ブログに誰かがアクセスしたときに、指定日投稿の処理を行うというものです。
このプラグインのMovable Type 5対応版を公開します。

1.プラグインのダウンロード

まず、以下のアドレスからプラグインのファイルをダウンロードします。

RunPeriodicTasks_2_30.zip

プラグインの継続的な開発やサポートのために、プラグインをご利用された方は、ドネーション(寄付)を行っていただけると幸いです。
ドネーションの方法は、こちらのページをご参照ください。

また、このプラグインの他にも、いくつかのプラグインを配布しています。
配布中のプラグインは、Movable Type Plugin Directoryのページをご参照ください。

Movable Typeのプラグイン開発等のドキュメント「Movable Type Developer's Guide Volume 1」も販売しています。
ご自分でプラグインを作ってみたい方に、ぜひお勧めしたい一冊です。
詳細は特設ページをご覧ください。

ファイルを解凍すると、「plugins」と「mt-static」の2つのフォルダができます。
これらのフォルダを、Movable Typeのインストール先ディレクトリにアップロードします。

また、アップロード後の「plugins」→「RunPeriodicTasks」ディレクトリの中に、「mt-run-periodic-tasks.cgi」というファイルがあります。
このファイルのパーミッションを755等に変えて、実行可能に設定します。

2.初期設定

このプラグインを使うウェブサイト/ブログで、初期設定を行います。
ウェブサイト/ブログのプラグイン設定のページを開き、RunPeriodicTasksプラグインの設定を開きます。
そして、以下の各項目を設定します。

設定項目内容
スケジュールタスクを実行しているときに表示するHTML指定日投稿の処理が行われている間に、ページに表示する内容を指定します。
スケジュールタスクが実行されたときに表示するHTML指定日投稿の処理が終わったときに、ページに表示する内容を指定します。
スケジュールタスクがスキップされたときに表示するHTML指定日投稿は、15分に1回だけ行うようになっています。前回の実行から15分たっていない場合は、ここで指定したHTMLがページに表示されます。
Ajaxを使用通常はオンにしておきます。
ただし、ブログ/ウェブサイトのドメインとMTのドメインが異なる場合は、Ajaxを使うことができませんので、その場合はオフにします。
Ajaxを使えない例:ブログのドメインが「blog.sample.com」で、MTのドメインが「www.sample.com」の場合

初期設定が終わったら、「変更を保存」のボタンをクリックします。
なお、設定を全く変えない場合も、変更を保存する必要があります。

RunPeriodicTasksプラグインの設定

3.テンプレートの書き換え

次に、指定日投稿を起動するためのタグを、テンプレートに追加します。
メインページやブログ記事など、アクセスが多いページのテンプレートを書き換えます。
テンプレートの書き換えが終わったら、そのテンプレートを再構築します。
これでこのプラグインが動作するようになります。

3-1.Ajaxを使う場合

Ajaxを使う場合、まずテンプレートにjQueryを組み込みます。
すでにjQueryを組み込んであるテンプレートなら、そのjQueryをそのまま使います。
また、jQueryを組み込んでいないテンプレートであれば、指定日投稿を起動するためのタグを入れる直前に、以下のタグを追加します。

<script type="text/javascript" src="<$mt:StaticWebPath$>jquery/jquery.min.js"></script>

次に、以下のタグを追加します。

<$mt:RunPeriodicTasksJS$>

このタグを追加した位置に、指定日投稿の結果(手順2.で設定したHTML)が表示されるようになります。

なお、MT4用ではjQueryではなくprototype.jsを使うようにしていました。
この点が異なりますので、MT4からバージョンアップされる方は、ご注意ください。

3-1.Ajaxを使わない場合

テンプレートに以下のタグを追加します。

<$mt:RunPeriodicTasksJS$>

なお、Ajaxを使わない場合、MTRunPeriodicTasksJSタグの位置でCGIにアクセスし、CGIの結果が返ってくるまでページの読み込みが止まります。
そのため、ページの先頭の方にこのタグを入れると、ページの表示が重くなったように見えます。
Ajaxを使わない場合は、MTRunPeriodicTasksJSタグはテンプレートのなるべく最後の方に追加するようにします。

4.指定日投稿の結果を画像で表示する

「mt-static」→「plugins」→「RunPeriodicTasks」→「images」ディレクトリに、指定日投稿の結果を表す画像もアップロードされます。
手順2.で、これらの画像を表示するように設定しても良いでしょう。

5.ライセンス

このプラグインはMITライセンスで公開します。
商用版MTおよびMTOSでお使いいただくことができます。