「WordPressで学ぶPHP(2)データ構造(配列・オブジェクト)編」を発売しました。
本書は「WordPressで学ぶPHP(1)変数・制御構造編」の続編にあたり、PHPの「データ構造」(配列とオブジェクト)について解説します。
配列やオブジェクトは、頭の中で考えるだけでは、イメージがつかみにくいです。本書では図を多用して、配列やオブジェクトをなるべく分かりやすく解説することを心がけました。
Kindle本で、定価250円です。
「秘密のコメント」プラグイン(MT4用)
かなり前に、「秘密のコメント」(SecretComment)というプラグインを公開していました。
一部のレンタルブログには、Blogの管理者だけにコメントが見えるようにして、一般には公開しない機能がありますが、それをMTで実現するプラグインです。
このプラグインをMT4用にしたものを公開します。
1.インストール
プラグインは以下のアドレスからダウンロードすることができます。
プラグインの継続的な開発やサポートのために、プラグインをご利用された方は、ドネーション(寄付)を行っていただけると幸いです。
ドネーションの方法は、こちらのページをご参照ください。
また、このプラグインの他にも、いくつかのプラグインを配布しています。
配布中のプラグインは、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プラグインでは、秘密のコメントはスパムにはなりません。
Movable Typeのプラグイン集「MT Cloud Starter Kit」をぜひご利用ください
jupi
こんにちは。
MT4対応プラグインのアップグレード助かりました。
無事導入できました。
これからもよろしくお願いします。
kata
こんばんは。
こちらのプラグインのバージョンアップを密かに待っておりました。
旧版のプラグインを削除後こちらをアップし、データベースのバージョンアップ、小粋空間さんのテンプレではありませんが、以前は「コメント入力フォーム」のテンプレートモジュールに追加していたので、こちらのエントリーを参考に書き換えたのですがタグをテンプレに足すとエラーが出て投稿できません。<mt:CommentIfSecret>で何か引っかかってるようです。
旧プラグインのままのソースですとエラーは出ないのですが、そのまま投稿されてしまい秘密のコメントになりません。
いまいち要領を得ないコメントで申し訳ないのですが確認願えますでしょうか。
壱からkataへの返信
>kataさん
こんにちは。
ご質問の件ですが、具体的にどのようなエラーメッセージが出るかお教えください。
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>>
等として、色の切り替えに使っておりました。
これらのタグを削除した所正常に動作しました。
こちらのプラグインを導入するとエラーが出るというのがちょっと分かりませんが、もう少し調べてみます。
kataからkataへの返信
新規スレッドでコメントしてしまいました。ごめんなさい。
壱からkataへの返信
>ketaさん
こんにちは。
カスタムフィールドを使う部分を、<mt:CommentEntry>~</mt:CommentEntry>のブロックで囲んでみると良いかも知れません。
kataからkataへの返信
>カスタムフィールドを使う部分を、~のブロックで囲んでみると良いかも知れません。
おっしゃるとおりに囲ってみましたら、無事エラーが出なくなりました。
大変助かりました、ご親切にありがとうございました…!
Crea
お世話になります。
先日導入させていただきましたが、タイトル通り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です。
秘密のコメント機能は正常に動作します。
お忙しいところ申し訳ありません。アドバイスいただけると助かります。
よろしくお願いします。
壱からCreaへの返信
>Creaさん
こんにちは。
プラグインの不具合をご指摘いただき、ありがとうございます。
ご質問の件ですが、SecretComment.plの100行目付近に、以下の赤字の行を追加してください。
CreaからCreaへの返信
壱様
さっそくのご教授ありがとうございます。
SecretComment.plに行を追加してテストしたところ、
WLW、携帯ともに投稿で正常終了になりました。
ありがとうございました。
これからも有用ですばらしいプラグインの開発を期待しています。
vincent.
おはようございます。
最新バージョン2.01をインストールしたのですが、
アップグレード(mt-upgrade.cgi)でエラーが発生します。
エラー文言:undefined type: int
以前、このような症状が起きたとき、
phpMyAdminで直接dbにテーブルを追加することで
対応してみましたが、今回はうまくゆかず頓挫しています。
環境:MT4.25/db:MySQL
レンタルサーバの仕様なのでしょうが、
dbにテーブル等を追加することを禁止しているようで、、
宜しくご教授下さいませ。
壱からvincent.への返信
>vincentさん
こんにちは。
phpMyAdminを使って、以下のようにしてみてください。
1.mt_commentテーブルに、以下のフィールドを追加します。
フィールド名:comment_secret
種別:tinyint
2.mt-configテーブルのレコード(1つしかないはず)を編集する状態にし、config_dataフィールドの値に以下を追加します。
PluginSchemaVersion SecretComment/SecretComment.pl=1.00
vincent.からvincent.への返信
うまくゆきました。
今後とも宜しくお願い申し上げます。
さゆり
はじめまして、いつもサイトを拝見しております。
秘密のコメントプラグインはダイナミックパブリッシングは非対応でしょうか?
秘密のコメントプラグインは私にとって、か・な・り!助かっているプラグインですので、もし可能でしたらダイナミックパブリッシング対応して頂けますと幸いです!
※MT4.3になって、やっとダイナミックパブリッシングがまともに動作してくれるようになりました。。
壱からさゆりへの返信
>さゆりさん
こんにちは。
MTCommentIfSecretタグで囲む部分を、以下のように書き換れば、ダイナミックパブリッシングでもうまく動作するようになると思います。
書き換え前:
<mt:CommentIfSecret> checked="checked"</mt:CommentIfSecret>
書き換え後:
<mt:If name="system_template"><mt:CommentIfSecret> checked="checked"</mt:CommentIfSecret></mt:If>
さゆりからさゆりへの返信
壱さん
早速お返事ありがとうございます。
試してみたのですが、
Smarty error: [in evaluated template line 100]: syntax error: unrecognized tag 'mtcommentifsecret' (Smarty_Compiler.class.php, line 580)
となってしまいました。
壱さんがおっしゃっているのは、perlダイナミックパブリッシングのことでしょうか?
※私の今の環境はMT4.25デフォルトのPHPダイナミックパブリッシングでトライしております。
さゆり
壱さん
コメント連投になってしまいましたが、
取り急ぎ、<mt:CommentIfSecret> のタグを使わず、ただ単に、
<input type="checkbox" id="comment-secret" name="comment-secret" />
を直接書いたら動作しました。
こんなやり方でOKだったのか?
と疑問に思いながらも、取り急ぎ自己解決しました。
壱からさゆりへの返信
>さゆりさん
こんにちは。
テンプレートセットの構造によりますが、No.17のコメントに書かれた方法だと、コメント確認のページに移動したときに、「秘密のコメント」のチェックボックスのオン/オフが正しくならないと思います。
以下のソースコードに「block.mtcommentifsecret.php」というファイル名を付けて、MTのディレクトリにある「php」ディレクトリにアップすれば、No.15の方法で一応は動くようになると思います。