お知らせ

PHPによるWordPressカスタマイズブック2009年9月8日

PHPによるWordPressカスタマイズブック」が発売されました。
WordPressのテンプレートにPHPのプログラムを書いてカスタマイズする方法や、WordPressのデータベースにPHPでアクセスする方法、またWordPressのプラグインの開発方法など、WordPressをより深く活用したい方に最適な一冊です。

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

「秘密のコメント」プラグイン(MT4用)

| コメント(18) | トラックバック(4)

かなり前に、「秘密のコメント」(SecretComment)というプラグインを公開していました。
一部のレンタルブログには、Blogの管理者だけにコメントが見えるようにして、一般には公開しない機能がありますが、それをMTで実現するプラグインです。
このプラグインをMT4用にしたものを公開します。

1.インストール

プラグインは以下のアドレスからダウンロードすることができます。

SecretComment_2_01.zip

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

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

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

ダウンロードしたZipファイルを解凍すると、「SecretComment」というフォルダができます。
このフォルダを、Movable Typeのインストール先ディレクトリにある「plugins」ディレクトリの中にアップロードします。

アップロード後に初めてMovable Typeにログインする際には、アップグレードのメッセージが表示されます。
画面の指示に従って、アップグレードを行います。

アップグレード

なお、旧版のSecretCommentプラグインをお使いになっていた場合、「plugins」ディレクトリに「SecretComment.pl」というファイルがあります。
そのファイルはサーバーから削除してください。

2.コメントフォームの書き換え

インストールが終わったら、テンプレート内のコメントフォームの部分に、「秘密のコメント」のチェックボックスを追加します。

Movable Type 4.2の標準テンプレートセットだと、「コメント」のテンプレートモジュールと、「コメントプレビュー」のシステムテンプレートを書き換えます。
どちらのテンプレートにも、コメントフォーム内に以下の行があります。

<div id="comments-open-captcha"></div>

この行の後に、以下の行を追加します。

<div id="comment-open-secret">
    <label for="comment-secret"><input type="checkbox" id="comment-secret" name="comment-secret"<mt:CommentIfSecret> checked="checked"</mt:CommentIfSecret> /> コメントを秘密にする(管理者に対してのみコメントする)</label>
</div>

また、小粋空間のMT4.2用のテンプレートセットだと、「コメント入力フォーム」のテンプレートモジュールを書き換えます。
MT4.2標準テンプレートセットと同じく、「<div id="comments-open-captcha"></div>」のタグがありますので、MT4.2標準テンプレートセットと同じタグを追加します。

3.秘密のコメントを投稿する

テンプレートを書き換えた後、ブログを再構築すると、各ブログ記事のコメントフォームに、「コメントを秘密にする(管理者に対してのみコメントする)」のチェックボックスが表示されます。

「コメントを秘密にする」のチェックボックスが表示される

このチェックをオンにしてコメントを投稿すると、そのコメントは未公開の扱いになります。
ブログには公開されず、MTの管理画面上でのみ見ることができるようになります。

管理画面のコメント一覧から、秘密のコメントとして投稿されたコメントを開くと、コメントの情報の最後の「秘密のコメント」のチェックがオンの状態で表示されます。

秘密のコメントを確認する

なお、旧版のSecretCommentプラグインでは、スパムフィルタの機能を利用して、秘密のコメントを実装していました。
一方、今回のSecretCommentプラグインでは、秘密のコメントはスパムにはなりません。

トラックバック(4)

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

待ってましたの「秘密のコメント」プラグイン(MT4用)が公開されていたので早々に... 続きを読む

モノトーンな日々 - 本館 - - 秘密のコメント・・・ (2009年5月 8日 13:33)

ブログに久しぶりに新しい機能を追加しました。 「秘密のコメント」プラグイン(MT... 続きを読む

非公開コメント機能を実装しました。 下記のプラグインを利用しました。 「秘密の... 続きを読む

Movable Type3では、画像認証Captchaをプラグインで実現していましたが、Movable Type 4 では標準でサポートされているので楽で... 続きを読む

コメント(スレッド7件,コメント18件)

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

No.1 jupi : ありがとうございます。

こんにちは。
MT4対応プラグインのアップグレード助かりました。
無事導入できました。
これからもよろしくお願いします。

No.2 kata : エラーが出ます

こんばんは。
こちらのプラグインのバージョンアップを密かに待っておりました。

旧版のプラグインを削除後こちらをアップし、データベースのバージョンアップ、小粋空間さんのテンプレではありませんが、以前は「コメント入力フォーム」のテンプレートモジュールに追加していたので、こちらのエントリーを参考に書き換えたのですがタグをテンプレに足すとエラーが出て投稿できません。<mt:CommentIfSecret>で何か引っかかってるようです。

旧プラグインのままのソースですとエラーは出ないのですが、そのまま投稿されてしまい秘密のコメントになりません。

いまいち要領を得ないコメントで申し訳ないのですが確認願えますでしょうか。

No.3  : Re: エラーが出ます

>kataさん
こんにちは。

ご質問の件ですが、具体的にどのようなエラーメッセージが出るかお教えください。

No.4 kata : (無題)

大変失礼いたしました。
再度エラー内容を確認した所、カスタムフィールドで自分で追加したタグとの相性?のようです…。

エラーの内容なのですが、
-----------------------------------
テンプレート「コメントプレビュー」の再構築中にエラーが発生しました: タグでエラーがありました: error in module コメント: テンプレート「コメント」の再構築中にエラーが発生しました: タグでエラーがありました: タグでエラーがありました: タグでエラーがありました: error in module コメント入力フォーム: テンプレート「コメント入力フォーム」の再構築中にエラーが発生しました: タグでエラーがありました: タグでエラーがありました: EntryDataColorタグを正しいコンテキストで使用していません。
-----------------------------------
です。

EntryDataColorというタグは、私がカスタムフィールドで追加したもので、
<div id="container"<mt:IfNonEmpty tag='EntryDataColor'><mt:SetVarBlock name="EntryDataColor"><mt:EntryDataColor></mt:SetVarBlock><mt:Unless name="EntryDataColor" like="指定無"> class="<mt:EntryDataColor>"</mt:Unless></mt:IfNonEmpty>>
等として、色の切り替えに使っておりました。
これらのタグを削除した所正常に動作しました。
こちらのプラグインを導入するとエラーが出るというのがちょっと分かりませんが、もう少し調べてみます。

No.5 kata : 度々すみません

新規スレッドでコメントしてしまいました。ごめんなさい。

No.6  : (無題)

>ketaさん
こんにちは。

カスタムフィールドを使う部分を、<mt:CommentEntry>~</mt:CommentEntry>のブロックで囲んでみると良いかも知れません。

No.7 kata : ありがとうございました

>カスタムフィールドを使う部分を、~のブロックで囲んでみると良いかも知れません。

おっしゃるとおりに囲ってみましたら、無事エラーが出なくなりました。
大変助かりました、ご親切にありがとうございました…!

No.8 Crea : mt-xmlrpcから更新するとエラーになります

お世話になります。
先日導入させていただきましたが、タイトル通りmt-xmlrpc.cgi
からブログを更新するとエラーになります。

message:Can't call method "param" on an undefined value at /*********/mtos/plugins/SecretComment/SecretComment.pl line 101.

すみません****の部分は削除しました。

Windows Live Writeとubicastの携帯投稿で同じようにエラーになります。ただブログ自体は登録更新されているみたいです。

MT4.23、サーバーはXserverです。
秘密のコメント機能は正常に動作します。

お忙しいところ申し訳ありません。アドバイスいただけると助かります。
よろしくお願いします。

No.9  : Re:mt-xmlrpcから更新するとエラーになります

>Creaさん
こんにちは。
プラグインの不具合をご指摘いただき、ありがとうございます。

ご質問の件ですが、SecretComment.plの100行目付近に、以下の赤字の行を追加してください。

・
・
・
my $app = MT->instance;
return 0 unless(defined($app->{query}));
$secret = $app->{query}->param('comment-secret');
・
・
・
No.10 Crea : 正常終了するようになりました。

壱様

さっそくのご教授ありがとうございます。
SecretComment.plに行を追加してテストしたところ、
WLW、携帯ともに投稿で正常終了になりました。
ありがとうございました。

これからも有用ですばらしいプラグインの開発を期待しています。

No.11 vincent. : アップグレードでエラー

おはようございます。

最新バージョン2.01をインストールしたのですが、
アップグレード(mt-upgrade.cgi)でエラーが発生します。

エラー文言:undefined type: int

以前、このような症状が起きたとき、
phpMyAdminで直接dbにテーブルを追加することで
対応してみましたが、今回はうまくゆかず頓挫しています。

環境:MT4.25/db:MySQL

レンタルサーバの仕様なのでしょうが、
dbにテーブル等を追加することを禁止しているようで、、

宜しくご教授下さいませ。

No.12  : Re:アップグレードでエラー

>vincentさん
こんにちは。

phpMyAdminを使って、以下のようにしてみてください。

1.mt_commentテーブルに、以下のフィールドを追加します。

フィールド名:comment_secret
種別:tinyint

2.mt-configテーブルのレコード(1つしかないはず)を編集する状態にし、config_dataフィールドの値に以下を追加します。

PluginSchemaVersion SecretComment/SecretComment.pl=1.00

No.13 vincent. : ありがとうございます

うまくゆきました。

今後とも宜しくお願い申し上げます。

No.14 さゆり : ダイナミックパブリッシング

はじめまして、いつもサイトを拝見しております。

秘密のコメントプラグインはダイナミックパブリッシングは非対応でしょうか?

秘密のコメントプラグインは私にとって、か・な・り!助かっているプラグインですので、もし可能でしたらダイナミックパブリッシング対応して頂けますと幸いです!

※MT4.3になって、やっとダイナミックパブリッシングがまともに動作してくれるようになりました。。

No.15  : Re:ダイナミックパブリッシング

>さゆりさん
こんにちは。

MTCommentIfSecretタグで囲む部分を、以下のように書き換れば、ダイナミックパブリッシングでもうまく動作するようになると思います。

書き換え前:
<mt:CommentIfSecret> checked="checked"</mt:CommentIfSecret>

書き換え後:
<mt:If name="system_template"><mt:CommentIfSecret> checked="checked"</mt:CommentIfSecret></mt:If>

No.16 さゆり : Re:ダイナミックパブリッシング

壱さん

早速お返事ありがとうございます。

試してみたのですが、
Smarty error: [in evaluated template line 100]: syntax error: unrecognized tag 'mtcommentifsecret' (Smarty_Compiler.class.php, line 580)
となってしまいました。

壱さんがおっしゃっているのは、perlダイナミックパブリッシングのことでしょうか?
※私の今の環境はMT4.25デフォルトのPHPダイナミックパブリッシングでトライしております。

No.17 さゆり : Re:ダイナミックパブリッシング

壱さん

コメント連投になってしまいましたが、
取り急ぎ、<mt:CommentIfSecret> のタグを使わず、ただ単に、
<input type="checkbox" id="comment-secret" name="comment-secret" />
を直接書いたら動作しました。

こんなやり方でOKだったのか?
と疑問に思いながらも、取り急ぎ自己解決しました。

No.18  : Re:ダイナミックパブリッシング

>さゆりさん
こんにちは。

テンプレートセットの構造によりますが、No.17のコメントに書かれた方法だと、コメント確認のページに移動したときに、「秘密のコメント」のチェックボックスのオン/オフが正しくならないと思います。

以下のソースコードに「block.mtcommentifsecret.php」というファイル名を付けて、MTのディレクトリにある「php」ディレクトリにアップすれば、No.15の方法で一応は動くようになると思います。

<?php
function smarty_block_mtcommentifsecret($args, $content, &$ctx, &$repeat) {
    return $ctx->_hdlr_if($args, $content, $ctx, $repeat, 0);
}
?>

コメントする