前回に続いて、MT3→MT4のテンプレート更新の覚え書きです。今回は、コメントフォーム部分。ウチではフォームのテキスト欄が表示されず、見出しだけになる現象が発生しました。
コメントに関係しそうなのは、テンプレートモジュールでは、「コメント」、「コメント入力フォーム」、「コメント詳細」。システムテンプレートでは「コメントプレビュー」、「コメント完了」の計5点のようです。MT3時代に作成したブログでは、テンプレートモジュールは3点とも存在せず、システムテンプレートはアリ、という状態でした。
ついでにトラックバックもほぼ同様の作業なので一緒に処理してしまいます。
■テンプレートモジュールを作成
この3点は「エントリ・アーカイブ」(MT4では「ブログ記事」)でインクルードされるモジュールです。「コメント」が他の2点をインクルードするようです。おそらくフォームが正しく表示されないのはこの部分の影響でしょう。元々この部分はたいしていじっていなかったはずなので、新モジュールをそっくり使ってしまいます。トラックバック関係は「トラックバック」のみのようです。
計4点、新規に作っておいたテスト用のブログからコピペで作成します。
■新コメントモジュール利用する設定
MTデフォルトではコメント欄は個別の「エントリー・アーカイブ」で使われているだけだと思うので、そこだけ修正すれば良いはず。「アーカイブ・テンプレート」→「エントリー・アーカイブ」テンプレート(名称は作成時期で多少違うと思います。MT2の頃だと英語だったり)を開き、コメントは、<MTIfCommentsAcrive>~</MTIfCommentsAcrive>、トラックバックは、<MTIfPingAcrive>~<MTIfPingAcrive>の部分をそれぞれ下記のように置き換えて下さい。
<$MTInclude module=”トラックバック”$>
<$MTInclude module=”コメント”$>
更に、<body>タグに以下の属性を追加します。前回の検索フォーム対策をしてある場合は、「ヘッダー」テンプレートの中にあると思います。また、元々class属性がある場合は、残して置いた方が良いかも知れません。でないとスタイルシートが正しく適用されなくなります。
<body class=”<MTIf name=”body_class”><$MTGetVar name=”body_class”$> </MTIf><$MTGetVar name=”page_layout” default=”layout-wtt”$>”<MTIf name=”body_onload”> onload=”<$MTGetVar name=”body_onload”$>”</MTIf>>
コメント、トラックバック部分がモジュールに追い出せたので、直接コードを書いてあった元のテンプレートに比べると、かなりスッキリしますね。もともと細かくいじる部分ではないので合理的です。
■JavaScriptテンプレートを作成
さて、これで試しに適当なエントリを再構築してみると、無事コメント欄が正しく表示されるようになると思います。ただし、TypeKeyなどの認証サービスを利用するリンクが表示されません。これはJavaScriptファイルであるmt.jsが存在しないためのようです。
「インデックステンプレート」を開くと、古いmt-site.jsというファイルに紐付いた「JavaScript」テンプレートがあるので、削除するなりして無効化し、やはりこれも新ブログからコピペします。「テンプレートの種類」は「JavaScript(javascript)」を選び、ファイル名は元あったmt-site.jsなど、現在のヘッダ部分で記述しているままを指定します。
(そういえば、この「テンプレートの種類」という項目、他のインデックステンプレートでも再設定しておく方が無難かも知れません。)
以上で、コメント欄は正しく表示、動作するようになったはずです。MT4では最初、コメント欄は隠れており、「サインイン」か「匿名でコメント」というリンクをクリックするとそれに応じた動作をする、という仕様のようです。
■システムテンプレートの更新
さて後は、「確認」ボタンを押した時のプレビュー画面を定義する「コメントプレビュー」(旧名は「Comment Preview Template」)と、コメント送信後の完了画面を定義する「コメント完了」の2点のシステムテンプレートを、やはり新ブログからコピペします。前者は旧名のテンプレートをクリックして中身を書き換えたら名称も自動的に更新されました。
以上で、ブログの外観はほとんど変わらず、コメント周りが正しく機能するようになると思います。動作チェックの後、残りの個別エントリを全て再構築して作業完了です。
MovableType 4.1でのコメントフォームを更新
MovableType 4.1でコメントしようとしたところ、コメントの確認で以下…