MovableType のコメント欄で、読者からのコメントを受付ける際に、コメントと一緒に画像ファイルなどの添付ファイルを受付けるための改造を紹介しています。元ネタは mixi のMovableType コミュニティでのトピックでした。現時点では、アップロードされたファイルへの URL とファイルサイズを取得するプラグインが実装されています。
;### アップファイルのパス (ローカルサイトパス基準) our $szUpfilePath = '/archive/src';
次に、MTCommentFileUpload.pl をMovableType のプラグインフォルダにコピーします。 MovableType のメインメニューに追加したプラグイン名が表示されていることを確認します。
<form method="post" action="<$MTCGIPath$><$MTCommentScript$>" enctype="multipart/form-data"> ← enctype を忘れずに追加します : 添付ファイル:<input type="file" name="file"> ← アップロードファイル用フィールドを追加します
表示しているコードは MoavableType 3.151-ja のものです。
:
return $app->handle_error($app->errstr()) unless $comment;
;### ファイルアップロード準備 2005/09/03
my $szUpFileName;
{
;# アップファイル上限サイズ
my $nMaxUploadSize = 1024 * 1024;# Bytes
;# アップできるファイル拡張子
my @arAllowFileExt = ('jpg', 'jpeg', 'gif', 'png', 'bmp');
;# アップファイルの格納パス(ローカル・サイト・パス基準)
my $szUploadFilePath = $blog->site_path. '/archive/src';
my $fh = $q->upload('file');
if ($fh) {
;# ファイルタイプのチェック
my $filename = $q->param('file');
my ($file_ext) = $filename =~ /.([^/:.]+)$/;
my @ret = grep { /$file_ext/ } @arAllowFileExt;
scalar (@ret)
or return $app->handle_error ("指定されたファイルはアップロードできません");
;# サイズチェック
seek ($fh, 0, 2);
if ($nMaxUploadSize < tell ($fh)) {
return $app->handle_error ("アップロード制限サイズ($nMaxUploadSize バイト)を超えました");
}
$szUpFileName = $szUploadFilePath. '/%d.'. $file_ext;
}
};### ここまで
## Here comes the fancy logic for deciding whether or not the
## comment appears.
:
同時にアップファイルに関する制限を設定することができます。
if (MT->run_callbacks('CommentFilter', $app, $comment))
{
$comment->save;
;### ファイルアップロード 2005/09/03
if ($szUpFileName) {
$szUpFileName = sprintf ($szUpFileName, $comment->id);
unlink $szUpFileName;
my $fh = $q->upload('file');
seek ($fh, 0, 0);
open (OUT, ">$szUpFileName")
or return $app->handle_error ("$szUpFileName を開けませんでした");
binmode OUT;
my $buffer;
while (read ($fh, $buffer, 1024)) {
print OUT $buffer;
}
close OUT;
};### ここまで
$blog->touch;
$blog->save;
:
<MTComments> <$MTCommentAuthor$> at <$MTCommentDate><br /> <MTCommentFileUpload> <img src="<$MTUpfileLink$>" align="left" alt="<$MTUpfileSize$> Bytes"> </MTCommentFileUpload> <$MTCommentBody$> </MTComments>
| ダウンロード / MD5 | バージョン | 日付 | サイズ(Bytes) | 動作環境 | 備考 |
|---|---|---|---|---|---|
|
MTCommentFileUpload GetMD5Hash('MTCommentFileUpload010.zip'); | 0.10 | '05/09/03 | GetFileSize('MTCommentFileUpload010.zip'); | MovableType | 3.151-ja で動作確認 |
寄せられたコメント (全 13 件中、最新 5 件まで表示しています)
以前からあこがれていたMTでブログを楽しもうと現在準備中です。
友人と楽しく意見交換などできたらと思い、何か良いプラグインはないものかと
いろいろ探していましたら、こちらのプラグインを発見!
さっそく使わせていただこうと思ったのですが、私も
if (MT->run_callbacks('CommentFilter', $app, $comment))以下の
挿入がわからず…(TT▽TT)ダァー(3.35を使用)
バージョンアップ楽しみにしています!
PS こちらのプラグインを使用されているサイトさんを見てみたいのですが、
よろしかったら教えていただけないでしょうか?
MT3.34で導入させて頂きました。
ありがとうございます。
動作は問題ないのですが、コメント投稿画面で設定したパスを
プレビュー画面で表示できずに困っています。
申し訳ありませんが、値を取得する方法がありましたら教えて頂けますか?
私もMT3.3対応切望しております
対応版楽しみにまっています
バージョンアップしましたら、是非利用させてもらいます!
できましたら、そのときにでもご一報を!
よろしくお願いいたします。
記事がアップデートされておらず申し訳ありません。
今ならMTシステムを直接書き換えるよりもプラグイン一本で導入できる方が確実便利ですね…
時間をみてバージョンアップしたいと思います。すみません。