お知らせ

フリーランスのための青色申告ガイドブック2012年1月11日

フリーランスのための青色申告ガイドブック」を発売しました。
青色申告にしてみたいが、やり方がよく分からないフリーランスの方のための解説書です。
会計ソフトの「やよいの青色申告」を使って、簿記の知識がなくても帳簿付けができるように工夫しました。
PDFによる販売で、当サイトでのみ購入できます(書店では購入できません)

他にも多数書籍を執筆しています。
こちらもぜひご覧ください。

ほぼ指定日投稿(MT5用)

| コメント(16) | トラックバック(0)

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

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

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

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

RunPeriodicTasks_2_20.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でお使いいただくことができます。

Facebook連携

当記事について「いいね」や「送信」を行っていただけると幸いです。


この記事についてウォールに投稿

トラックバック(0)

トラックバックURL: http://www.h-fj.com/mt/mt-tb.cgi/2010.

コメント(スレッド11件,コメント16件)

コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。

No.1 秋雲 : システムのプラグイン画面でエラーが・・・

当プラグインを利用いたしているものですが、MT5のシステム画面でプラグインの画面を開こうとすると、

Can't locate object method "load" via package "MT::Website" at C:\xampp\vhosts\hlna.localhost\cgi-bin\mt\plugins\RunPeriodicTasks\RunPeriodicTask.pl line 125. 

このようなエラーが出てしまって、開けなくなってしまいます。。。
プラグインを抜くと画面が表示されるのですが、原因は分かりますでしょうか。
よろしくお願いします。

No.2  : Re:システムのプラグイン画面でエラーが・・・

>秋雲さん
こんにちは。

RunPeriodicTasks.plファイルの16行目の「use MT;」の行の後に、「use MT::Website;」の行を追加してみてください。

No.3 はにわ : (無題)

こんにちわ、MTでメール投稿をしたくて、こちらのプラグインを利用させていただこうと思ってるのですが。

メール投稿はさておき、指定日投稿をできるように、解説通りにやっていると思うのですが、どうしてもうまくいきません。

メインのテンプレートにタグを追加したところ、表示が
「run-periodic-tasksスクリプトを実行中です...」
のままになってしまいます。もちろん指定日投稿もできてません。ブログのソースを見ると以下のようになっていました。

<script type="text/javascript" src="<ブログURL>/mt-static/jquery/jquery.min.js"></script>

<div id="fj_realtime_rebuild_ajax"><p>run-periodic-tasksスクリプトを実行中です...</p></div>
<script type="text/javascript">
//<![CDATA[
(function(){
$('#fj_realtime_rebuild_ajax').load('<ブログURL>/cgi-bin/plugins/RunPeriodicTasks/mt-run-periodic-tasks.cgi?ajax=1&blog_id=4');
})();
//]]>
</script>

Ajaxを使わない設定にしてもできませんでした。
何かお気づきの点があればご教授願いたいと思います。よろしくお願いいたします。

No.4  : (無題)

>はにわさん
こんにちは。

推測ですが、ページ内の他のJavaScriptでエラーが起こっていて、ほぼ指定日投稿のJavaScriptがまったく動作していないのではないかと思います。

No.5 ふく : 上記と同じ現象が起こります

MT5を使用しており、指定日投稿をしたくても、cronを使えないサーバなので
こちらのプラグインを利用させていただこうとしたのですが
「はにわ」さんと同じ現象で、指定日投稿ができません。

IEで見ると、JavaScriptエラーが返ってきており
「エラー:書込みができません」と出てきます。

ページ内で使用しているJavaScriptを総て外し
「3-1.Ajaxを使う場合」と同じ設定をして
試してみても、同様のエラーが返ってきて
指定日投稿も反映されませんでした。

Ajaxを使用しない設定でも、指定日投稿も反映されず
各ディレクトリやパーミッション等も見直しましたが
原因が分からないため、投稿させていただきました。

宜しくお願い致します。

No.6  : Re:上記と同じ現象が起こります

>ふくさん
こんにちは。

Ajaxの仕様上、ブログ(ウェブサイト)のドメインと、MTのドメインが異なると、Ajaxで通信することができません。そのため、JavaScriptで「書き込みができません」のエラーが発生します。
Ajaxの仕様なので、プラグイン側で回避することはできません。

なお、Ajaxを使わない設定でも動作しない原因は、申し訳ありませんがはっきりとは分かりません。
こちらで試した限りでは動作しています。

No.7 ふく : (無題)

ご回答ありがとうございます。

しかしながら、ブログ(Webサイト)のドメインと
MTのドメインは以下の様に、同じドメインとなっております。
・ブログ:ドメイン名/ブログ名/
・MT:ドメイン名/mt/

テンプレートから書き出されたソースを見る限りでは
jqueryおよびmt-run-periodic-tasks.cgiへのパスも
間違っていない感じですので
なぜ動作しないのか、悩んでおります。

もしも、他に原因などが考えられましたら
また教えていただけると幸いです。

それでは、よろしくお願いいたします。

No.8  : (無題)

>ふくさん
こんにちは。

「書き込みできません」のエラーは、HTMLの構造によっても出ることがあるようです。
とりあえず、そちらのサイトを見せていただくことはできないでしょうか(プラグインのJavaScriptが入っている状態で)。

No.9 うぃん : (無題)

いつもお世話になります。
こちらのほぼ指定日投稿を利用させていただいていますが、プラグインの設定画面を見ようとすると以下のようなエラーが表示されてしまいます。

Can't use string ("<p>run-periodic-tasksスã‚Â") as a HASH ref while "strict refs" in use

ちなみにMT5.04を利用しており、ウェブサイトおよびシステムのプラグイン設定画面は正しく表示されるようです。
お忙しいところ恐縮ですが、ご回答いただけますでしょうか。

No.10  : (無題)

>うぃんさん
こんにちは。

申し訳ありませんが、こちらでは症状を再現することができませんでした。
そちらのサーバーにログインして動作を追ってみないと、原因は分からないです。

No.11 まちもと : これで正解なんでしょうか?

いつも利用させていただきありがとうございます。

Ajax版を使用して、ほぼ時間指定での表示ができました。が、これで正解なのか分からないので教えてください。

jQueryを元々組込み済み+の直前にを記入。とりあえずブログのトップページとブログ記事のテンプレートに記入しました。

そうすると、時間指定表示はできるのですが、以下の内容がページに常時表示されたままになります。
<__trans phrase="run-periodic-tasks script was done.">

上記の表示はスクリプトを実行中のときだけのもので、その後は消えるんですよね?ずっと常に表示されっぱなしなのでしょうか?(ちなみにプラグインの設定画面では初期設定のまま「run-periodic-tasksスクリプトの処理が終了しました」で保存したのですが、ページでの表示はなぜか英語です)

何が原因なのでしょうか?
お忙しいところ申し訳ありませんが、よろしくお願いいたします。

No.12  : Re:これで正解なんでしょうか?

>まちもとさん
こんにちは。

プラグインの実行結果は、ページに表示されたままになります。自動的には消えません。

なお、プラグインの設定を保存したにも関わらず、メッセージが英語になっている件は、申し訳ありませんが原因不明です。

No.13 まちもと : (無題)

早速のご回答ありがとうございます!

そうなんですね、表示されたままで正解なんですね。
スッキリしました。

お忙しいところありがとうございました。

No.14 あん : 使用可能なバージョンについて

RunPeriodicTasksの利用可能なバージョンについてお伺いします。

MT Pro ver. 5.02では使用することが出来ました。
MT ver. 5.04 でプラグインをインストールしてシステムからプラグインの画面を開くと以下のエラーメッセージが表示されます。
「Can't locate object method "load" via package "MT::Website" 」

ウェブサイトやブログからのプラグイン画面では正常に設定を行うことができます。

改善方法はありますでしょうか。

お忙しいところ申し訳ありませんが、宜しくお願い致します。

No.15  : Re:使用可能なバージョンについて

>あんさん
こんにちは。

ご質問の件ですが、1番のコメントの方と同じ現象だと思います。
2番のコメントに書いた方法で対処してください。

No.16 じょにお : マルチブログにたいして

こんばんは。
cronが使えないサーバーで何とか指定日投稿をしたくて使わせていただきました。ありがとうございます。

1つ疑問なのですが、MT5でマルチブログを使用してTOPに各ブログのアーカイブを表示させるようにしている場合「ほぼ指定日投稿」で更新された記事はTOPページに表示されるのでしょうか?

されるとしたら何か特別な設定は必要ですか?
以上、お忙しいところ申し訳ありませんが、よろしくお願いいたします。

コメントする


Facebookでコメント

試験的にFacebookのコメントフォームを設置しました。