Movable Typeには「指定日投稿」の機能があり、指定した日時に自動的にエントリーを投稿することができます。
ただし、そのためには指定日投稿のスクリプトを定期的に実行する必要があります。
cronを使えないサーバーだと、スクリプトを定期的に自動実行することができません。
この問題を解決するために、「ほぼ指定日投稿」(JavaScript版)というプラグイン公開していました。
ブログに誰かがアクセスしてきたときに、指定日投稿の処理を行うというものです。
このプラグインを若干改良し、以前のバージョンよりも、幾分簡単に設定できるようにしました。
なお、既存のバージョンをお使いの方は、バージョンアップするとテンプレートの書き換え等が必要になりますので、既存のバージョンをそのままお使いください。
1.プラグインのダウンロード
まず、以下のアドレスからプラグインのファイルをダウンロードします。
プラグインの継続的な開発やサポートのために、プラグインをご利用された方は、ドネーション(寄付)を行っていただけると幸いです。
ドネーションの方法は、こちらのページをご参照ください。
また、このプラグインの他にも、いくつかのプラグインを配布しています。
配布中のプラグインは、Movable Type Plugin Directoryのページをご参照ください。
ファイルを解凍すると、「plugins」と「mt-static」の2つのフォルダができます。
これらのフォルダを、Movable Typeのインストール先ディレクトリにアップロードします。
2.初期設定
このプラグインを使うブログで、初期設定を行います。
ブログのプラグイン設定のページを開き、RunPeriodicTasksプラグインの設定を開きます。
そして、以下の各項目を設定します。
| 設定項目 | 内容 |
|---|---|
| スケジュールタスクを実行しているときに表示するHTML | 指定日投稿の処理が行われている間に、ブログのページに表示する内容を指定します。 |
| スケジュールタスクが実行されたときに表示するHTML | 指定日投稿の処理が終わったときに、ブログのページに表示する内容を指定します。 |
| スケジュールタスクがスキップされたときに表示するHTML | 指定日投稿は、15分に1回だけ行うようになっています。前回の実行から15分たっていない場合は、ここで指定したHTMLがブログのページに表示されます。 |
| Ajaxを使用 | 通常はオンにしておきます。 ただし、ブログのドメインとMTのドメインが異なる場合は、Ajaxを使うことができませんので、その場合はオフにします。 Ajaxを使えない例:ブログのドメインが「blog.sample.com」で、MTのドメインが「www.sample.com」の場合 |
初期設定が終わったら、「変更を保存」のボタンをクリックします。
なお、設定を全く変えない場合も、変更を保存する必要があります。
3.テンプレートの書き換え
次に、指定日投稿を起動するためのタグを、テンプレートに追加します。
メインページやブログ記事など、アクセスが多いページのテンプレートで、以下のタグを追加します。
<$MTRunPeriodicTasksJS$>
このタグを追加した位置に、指定日投稿の結果(手順2.で設定したHTML)が表示されるようになります。
テンプレートの書き換えが終わったら、そのテンプレートを再構築します。
これでこのプラグインが動作するようになります。
なお、Ajaxを使わない場合、このタグの位置でCGIにアクセスし、CGIの結果が返ってくるまでページの読み込みが止まります。
そのため、ページの先頭の方にこのタグを入れると、ページの表示が重くなったように見えます。
Ajaxを使わない場合は、MTRunPeriodicTasksJSタグはテンプレートのなるべく最後の方に追加するようにします。
4.指定日投稿の結果を画像で表示する
「mt-static」→「plugins」→「RunPeriodicTasks」→「images」ディレクトリに、指定日投稿の結果を表す画像もアップロードされます。
手順2.で、これらの画像を表示するように設定しても良いでしょう。
5.ライセンス
このプラグインはMITライセンスで公開します。
商用版MTおよびMTOSでお使いいただくことができます。


コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。
いつも様々なプラグインを使わせていただいております。
今回も便利なものをありがとうございます。
早速設置させていただいたのですが、時間が来ても公開になりません。
プラグインは使用可になっており、設定の保存も行いました。
タグ自体はインデックスページの最終(フッタの前)に設置しました。
が、何か間違っているのでしょうか?
MT4.1でPHP化、ダイナミックパブリッシングも使用しています。
>寺山 銀さん
こんにちは。
MTの指定日投稿の処理に不具合があるようです。
MT4.1をお使いであれば、MT_DIR/lib/MT/WeblogPublisher.pmの1930行目付近に、以下の赤字の行を追加してみてください。
・
・
・
$changed++;
$total_changed++;
}
$blog->touch;
$blog->save;
if ($changed) {
my %rebuilt_okay;
my $rebuilt;
・
・
・
お世話になります。
ご指摘の箇所を修正してみましたが、やはり公開されませんでした。
ところで、説明文で
「ファイルを解凍すると、「plugins」と「mt-static」の2つのフォルダができます。
これらのフォルダを、Movable Typeの「plugins」ディレクトリにアップロードします。」
とありますが、これまでの例を見ると「mt-static」はMovable Typeの「mt-static」フォルダにアップロードしていたと思うのですが、今回はどちらもMovable Typeの「plugins」ディレクトリアップロードして間違いないのでしょうか?
>寺山 銀さん
こんにちは。
記事の間違いをご指摘いただき、ありがとうございます。
「plugins」「mt-static」のフォルダは、Movable Typeのインストール先ディレクトリにアップロードします。
訂正箇所を修正し、設定通りにし直したのですが、やはり公開されませんでした。
すっごく基本的な質問だと思いますが、自分でアクセスした場合ももちろんその対象となるのですよね?
新しい記事を書いて、公開時間から15分ほど待って読み込みをしますが、公開されなかったもので・・・
他に使っているプラグインのせいでしょうか?
おそらくですが、うまくいったようです。
昨晩は公開されました。昨々晩はダメだったのですが・・・?
また、おかしな事があれば、書き込みにまいります。
ありがとうございます。
どうもはじめまして、にしさきです。
こちらのプラグインを使わせていただきまして、設定通り設定してみたのですが、
タグを埋め込んだページにアクセスすると、
「Smarty error: [in mt:194 line 75]: syntax error: unrecognized tag 'mtrunperiodictasksjs' (Smarty_Compiler.class.php, line 580) 」
というエラーがでて、タグを埋め込んだ部分が表示されなくなってしまいます。
MT4.1です、なにか原因は考えられますでしょうか、お知恵を拝借いただければ幸いです。
>にしさきさん
プラグインご利用ありがとうございます。
ご質問の件ですが、申し訳ありませんが、このプラグインはMT標準のダイナミックパブリッシングには対応していません。
お書きになったエラーメッセージは、MT標準のダイナミックパブリッシングが出しているものです。
拙作の「Perl版ダイナミックパブリッシング」となら併用することができます。
http://www.h-fj.com/blog/archives/2007/07/06-095902.php
ただし、その場合もMTの本体を一部書き換える必要があります。
Movable Typeのインストール先→「lib」ディレクトリ→「MT」ディレクトリにある「WeblogPublisher.pl」というファイルで、1942行目にある「$rebuilt++;」
の行の後に、以下の2行を追加してください。
$blog->touch;
$blog->save;
壱様
ご丁寧な返信どうもありがとうございました。
無事解決する事が出来ました。
すばらしいツールに感謝感謝です。
ブログ簡単パワーアップ Movable Type4 スーパーカスタマイズテクニック
予約させていただきました!