Movable Type 3 から Movable 4 へのアップグレード(コメント関連テンプレート差分)

Movable Type 3 から Movable 4 へのアップグレード(コメント関連テンプレート差分)

Posted at August 10,2007 2:33 AM
Tag:[4.0, Comment, MovableType]

Movable Type 3 から Movable 4 へアップグレードした場合、MT4 で新しく追加・変更されたコメント関連のMTタグは反映されません。

ということで机上での確認ですが、MT4 の機能を利用する場合のテンプレートの差分を示します。

なお本エントリーの反映を行う場合、インデックステンプレートの mt.js(MT3 の mt-site.js の後継) の利用が前提となりますが、アップグレードでは mt.js がインデックステンプレートに生成されません。

mt.js を取得するには、新しいブログをひとつ作成し(再構築はしない)、そこからインデックステンプレートにある「JavaScript(mt.js)」の内容をコピーし、元ブログのインデックステンプレートに新しいテンプレートとして追加してください(他に良い方法があればご教示ください)。

また、mt-site,js を読み込んでいる script 要素も適宜 mt.js を読み込むように変更してください。

以下、エントリー・アーカイブテンプレートとコメント・プレビューテンプレートのMT3/MT4の差分です。

1.認証表示用JavaScript

MT3 まで TypeKey 認証のみでしたが、MT4 から Movable Type/OpenID/LiveJournal/Vox/TypeKey と複数認証に対応するようになったので、TypeKey 認証表示用の JavaScript をそれに対応したものに変更してください。
また、コメントプレビューテンプレートには is_preview = true; を追加してください。

MT3

<script type="text/javascript">
writeTypeKeyGreeting(commenter_name, <$MTEntryID$>);
</script>

MT4

<MTIfRegistrationAllowed>
    <div id="comment-form-external-auth">
        <script type="text/javascript">
        <!--
        writeCommenterGreeting(commenter_name, <$MTEntryID$>, <$MTEntryBlogID$>, commenter_id, commenter_url);
        //-->
        </script>
    </div>
</MTIfRegistrationAllowed>

MT4(コメントプレビュー)

<MTIfRegistrationAllowed>
    <div id="comment-form-external-auth">
        <script type="text/javascript">
        <!--
        is_preview = true;
        writeCommenterGreeting(commenter_name, <$MTEntryID$>, <$MTEntryBlogID$>, commenter_id, commenter_url);
        //-->
        </script>
    </div>
</MTIfRegistrationAllowed>

注:この JavaScript は MT3 では form 要素の中にありましたが、MT4 では form 要素の直前に移動してください。

理由は、MT4 ではコメントフォームがデフォルトで非表示になり、認証コメントの場合はサインインすることによってコメントフォームが表示されます。

またブログ管理画面の「設定」→「登録・認証」で「認証なしコメント」をチェックすれば認証なしのコメントも可能ですが、その際はコメントフォームの代わりに「匿名でコメントすることもできます。 」というリンクが表示され(下)、それをクリックすればコメントフォームが表示されます。

コメントフォーム非表示の状態

この JavaScript では、インデックステンプレートの JavaScript(mt.js)の生成条件にしたがって、そういった制御を行っています。

2.form 要素

コメントフォームの form 要素の id 属性 comments-form を追加してください。
また input 要素をひとつ追加してください。

MT3

<form method="post" action="<$MTCGIPath$><$MTCommentScript$>" name="comments_form" onsubmit="if (this.bakecookie.checked) rememberMe(this)">
<input type="hidden" name="static" value="1" />
<input type="hidden" name="entry_id" value="<$MTEntryID$>" />

MT4

<form method="post" action="<$MTCGIPath$><$MTCommentScript$>" name="comments_form" id="comments-form" onsubmit="if (this.bakecookie.checked) rememberMe(this)">
<input type="hidden" name="static" value="1" />
<input type="hidden" name="entry_id" value="<$MTEntryID$>" />
<input type="hidden" name="__lang" value="<$MTBlogLanguage$>" />

3.コメントフォーム

(X)HTMLが変更されています。MT3 までは「名前」と「メールアドレス」を div 要素で括り、TypeKey サインインの場合に id 属性 name-email を狙って非表示にしていましたが、
MT4では「名前」と「メールアドレス」に与えられた id 属性 comment-form-name と comment-form-email で表示・非表示を切り替えています。

MT3

<div id="comments-open-data">
   <div id="name-email">
      <p>
         <label for="comment-author">名前:</label>
         <input id="comment-author" name="author" size="30" />
      </p>
      <p>
         <label for="comment-email">メールアドレス:</label>
         <input id="comment-email" name="email" size="30" />
      </p>
   </div>
 
   <p>
      <label for="comment-url">URL:</label>
      <input id="comment-url" name="url" size="30" />
   </p>
   <p>
      <label for="comment-bake-cookie"><input type="checkbox"
         id="comment-bake-cookie" name="bakecookie" onclick="if (!this.checked) forgetMe(document.comments_form)" value="1" />
         この情報を登録しますか?</label>
   </p>
</div>

MT4

<div id="comments-open-data">
    <div id="comment-form-name">
        <label for="comment-author">名前</label>
        <input id="comment-author" name="author" size="30" />
    </div>
    <div id="comment-form-email">
        <label for="comment-email">メールアドレス</label>
        <input id="comment-email" name="email" size="30" />
    </div>
    <div id="comment-form-url">
        <label for="comment-url">URL</label>
        <input id="comment-url" name="url" size="30" />
    </div>
    <div id="comment-form-remember-me">
        <label for="comment-bake-cookie"><input type="checkbox" id="comment-bake-cookie" name="bakecookie" onclick="if (!this.checked) forgetMe(document.comments_form)" value="1" />
            ログイン情報を記憶</label>
    </div>
</div>

MT4(コメントプレビュー)

<div id="comments-open-data">
    <div id="comment-form-name">
        <label for="comment-author">名前</label>
        <input id="comment-author" name="author" size="30" value="<$MTCommentAuthor encode_html="1"$>" />
    </div>
    <div id="comment-form-email">
        <label for="comment-email">メールアドレス</label>
        <input id="comment-email" name="email" size="30" value="<$MTCommentEmail encode_html="1"$>" />
    </div>
    <div id="comment-form-url">
        <label for="comment-url">URL</label>
        <input id="comment-url" name="url" size="30" value="<$MTCommentURL encode_html="1"$>" />
    </div>
    <div id="comment-form-remember-me">
        <label for="comment-bake-cookie"><input type="checkbox" id="comment-bake-cookie" name="bakecookie" onclick="if (!this.checked) forgetMe(document.comments_form)" value="1" />
            ログイン情報を記憶</label>
    </div>
</div>

4.CAPTCHA 入力フィールド

MT4 で追加された CAPTCHA の入力フィールドを表示する場合は下記の青色部分を追加してください。
この設定とは別に、ブログ管理画面の「設定」→「コメント」で、CAPTCHA プロバイダの設定が必要です。

     :
<p id="comments-open-text">
   <label for="comment-text">コメント: <MTIfAllowCommentHTML>(スタイル用のHTMLタグが使えます)</MTIfAllowCommentHTML></label>
   <textarea id="comment-text" name="text" rows="15" cols="50"></textarea>
</p>
<MTIfNonEmpty tag="MTCaptchaFields">
<MTIfCommentsAccepted><MTIfRegistrationAllowed><MTElse><$MTCaptchaFields$></MTIfRegistrationAllowed></MTIfCommentsAccepted>
<div id="comments-open-captcha">
</div>
</MTIfNonEmpty>
<div id="comments-open-footer" class="comments-open-footer">
     :

5.表示・非表示で使われる id 属性

下の5つの id 属性値は mt.js で参照されるものです。変更しないようにしましょう。

comment-form-name
comment-form-email
comments-open-data
comments-open-text
comments-open-footer;
関連記事
zenback
人気エントリー
トラックバックURL


トラックバック

MT3.35から4へのアップグレード注意点 from ストレンジャー
MovableType3.35から4へのアップグレードですが、旧テンプレートがそ... [続きを読む]

Tracked on August 19, 2007 5:52 PM

MT3.35から4へのアップグレード注意点 from ストレンジャー
もうひとつのブログの方でやってみた、MovableType3.35から4へのアッ... [続きを読む]

Tracked on August 19, 2007 5:56 PM

MT3からMT4へアップグレード from CoffeeTime
とりあえず、携帯用のプログラムMT4iのMovable Type4対応バージョン... [続きを読む]

Tracked on August 29, 2007 3:40 PM
コメント

新たにテンプレートを作成し、名前を「JavaScript」、テンプレートの種類を「JavaScript (javascript)」、出力ファイル名を「mt.js」、内容は空 (何かあっても問題ないです) で保存してから Template Backup and Refresh プラグインを使ってテンプレートの初期化をすると mt.js のコードがゲットできますよ!

手間は五分五分といった感じですが、どうせ日の目をみる機会の少ないプリセットプラグインなので使ってあげたらいいと思います!

[1] Posted by 松澤 涼 : August 10, 2007 7:26 AM

>松澤 涼さん
こんばんは。
素晴らしい!その手がありましたね。

[2] Posted by yujiro : August 11, 2007 3:08 AM

とってもためになりました~!ありがとう。

[3] Posted by ぽぽ : February 27, 2008 5:52 PM

>ぽぽさん
こんばんは。
コメントありがとうございました。
お役に立てたようでよかったです。

[4] Posted by yujiro logo : February 29, 2008 2:25 AM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)