MovableType 3.01D-ja 導入
'Movable Type 日本語版サイト: Movable Type 3.0 Developer Edition 日本語版の提供を開始しました' お待たせいたしました。Movable Type 3.0 Developer Edition 日本語版の提供を開始いたしました。米国で7月9日にリリースされた最新版3.01Dをベースにしております。
- TypeKey認証を行ってコメントをつけられるようにテンプレートを編集しました。
- CatEntries 2.8 がうまく動かなかったので追記します。
テンプレートの編集
TypeKey認証を行う場合はテンプレートの編集が必要になってきます。行わない場合に修正しても、<mtifregistrationrequired>により処理を振り分けているので編集しておいて損はないかと思います。
通常
コメントをつける際に特殊な項目がない場合以下のように<mtcommentfields>だけで済みます。
<mtifcommentsallowed> <h2>コメントしてください</h2> <mtcommentfields> </mtcommentfields></mtifcommentsallowed>
コメントフォームに項目を追加している場合
yujilog のように「コメントに返信がある場合にメールでお知らせ」のような項目や、spam 対策に項目を増やしている場合は以下のように修正します。適宜既存の input タグをもってきて修正します。
※なお、ページデザインの関係上改行を document.write や a タグ内に入れているので解除してペーストすることをお勧めします。
<mtentryifcommentsopen> <h2>コメントしてください</h2> <mtifregistrationrequired> <mtifnonempty tag="MTTypeKeyToken"> <div id="thanks"> <p>サイン・インを確認しました、 <script type="text/javascript" src="http://<MTCGIPath><mtcommentscript>?__mode=cmtr_name_js"></mtcommentscript></script> <script>document.write(commenter_name);</script> さん。続けてコメントしてください。 (<a href="http://<$MTCGIPath$>< $MTCommentScript$>?__mode=handle_sign_in&static=1& entry_id=< $MTEntryID$>&logout=1">サイン・アウト</a>)</p> (いままで、ここでコメントしたとがないときは、コメントを表示する前にこのウェブログのオーナー の承認が必要になることがあります。承認されるまではコメントは表示されません。 そのときはしばらく待ってください。) <form method="post" action="<$MTCGIPath$>< $MTCommentScript$>" name="comments_form" onsubmit="if (this.bakecookie[0].checked) rememberMe(this)"> <input type="hidden" name="static" value="1" /> <input type="hidden" name="entry_id" value="<$MTEntryID$/>" /> <p><label for="url">URL:</label><br /> <input tabindex="1" type="text" name="url" id="url" /></p> <p>入力情報を記憶する: <input type="radio" id="remember" name="bakecookie" onclick="rememberMe(this.form)" /> <label for="remember">はい</label> <input type="radio" id="forget" name="bakecookie" onclick="forgetMe(this.form)" value="Forget Info" style="margin-left: 15px;" /> <label for="forget">いいえ</label><br style="clear: both;" /></p> <p><label for="text">コメント:</label><br /> <textarea tabindex="2" id="text" name="text" rows="10" cols="50"></textarea></p> <div align="center"> <input type="submit" tabindex="3" name="preview" value=" 確認 " /> <input style="font-weight: bold;" tabindex="4" type="submit" name="post" value=" 投稿 " /> </div> </form> </div> <script language="javascript" type="text/javascript"> <!-- if (commenter_name) { document.getElementById(''thanks'').style.display = ''block''; } else { document.write(''サイン・インしていません。このサイトにコメントをする前に登録してください。 <a href="http://<$MTSignOnURL$>&v=1.1& <mtifneedemail>need_email=1&</mtifneedemail> t=<mttypekeytoken>& _return=< $MTCGIPath$><mtcommentscript>%3f__mode=handle_sign_in %26static=1%26entry_id=< $MTEntryID$>"> サイン・イン''); document.getElementById(''thanks'').style.display = ''none''; } // --> </mtcommentscript></mttypekeytoken></script> <mtelse> コメント登録機能が設定されていますが、TypeKey トークンが設定されていません。 </mtelse> </mtifnonempty> <mtelse> <mtifnonempty tag="MTTypeKeyToken"> <script type="text/javascript" src="http://<MTCGIPath><mtcommentscript>?__mode=cmtr_name_js"></mtcommentscript></script> <script language="javascript" type="text/javascript"> <!-- if (commenter_name) { document.write(''<p>サイン・インを確認しました、'', commenter_name, '' さん。 続けてコメントしてください。(<a href="http://<$MTCGIPath$>< $MTCommentScript$>?__mode=handle_sign_in& static=1&entry_id=< $MTEntryID$>&logout=1">サイン・アウト</a>)''); } else { document.write(''<p>TypeKey ID を使って <a href="http://<$MTSignOnURL$>&v=1.1& <mtifneedemail>need_email=1&</mtifneedemail> t=<mttypekeytoken>& _return=< $MTCGIPath$><mtcommentscript>%3f__mode=handle_sign_in %26static=1%26entry_id=< $MTEntryID$>"> サイン・イン</mtcommentscript></mttypekeytoken></a> してください。</p>''); } // --> </script> </mtifnonempty> <form method="post" action="<$MTCGIPath$>< $MTCommentScript$>" name="comments_form" onsubmit="if (this.bakecookie[0].checked) rememberMe(this)"> <input type="hidden" name="static" value="1" /> <input type="hidden" name="entry_id" value="<$MTEntryID$/>" /> <div id="name_email"> <p><label for="author">名前:</label><br /> <input tabindex="1" id="author" name="author" /></p> <p><label for="email">メールアドレス(実際には表示されません):</label><br /> <input tabindex="2" id="email" name="email" /></p> </div> <mtifnonempty tag="MTTypeKeyToken"> <script language="javascript" type="text/javascript"> <!-- if (commenter_name) { document.getElementById(''name_email'').style.display = ''none''; } // --> </script> </mtifnonempty> <p><label for="url">URL:</label><br /> <input tabindex="3" type="text" name="url" id="url" /></p> <p>入力情報を記憶する: <input type="radio" id="remember" onClick="rememberMe(this.form)" name="bakecookie" /> <label for="remember">はい</label> <input type="radio" id="forget" name="bakecookie" onclick="forgetMe(this.form)" value="Forget Info" style="margin-left: 15px;" /> <label for="forget">いいえ</label><br style="clear: both;" /></p> <p><label for="text">コメント:</label> <mtifallowcommenthtml> (書式を変更するような一部のHTMLタグを使うことができます)</mtifallowcommenthtml><br /> <textarea tabindex="4" id="text" name="text" rows="10" cols="50"></textarea></p> <div align="center"> <input type="submit" name="preview" tabindex="5" value=" 確認 " /> <input style="font-weight: bold;" type="submit" name="post" tabindex="6" value=" 投稿 " /> </div> </form> </mtelse> </mtifregistrationrequired> <script type="text/javascript" language="javascript"> <!-- if (document.comments_form.email != undefined) document.comments_form.email.value = getCookie("mtcmtmail"); if (document.comments_form.author != undefined) document.comments_form.author.value = getCookie("mtcmtauth"); if (document.comments_form.url != undefined) document.comments_form.url.value = getCookie("mtcmthome"); if (getCookie("mtcmtauth") || getCookie("mtcmthome")) { document.comments_form.bakecookie[0].checked = true; } else { document.comments_form.bakecookie[1].checked = true; } //--> </script> </mtentryifcommentsopen>
CatEntriesプラグインの修正
とりあえず、2.661から使っていたプラグインをそのまま3.0で使えると思っていたのでそのままコピーしてきて再構築してみる。と、CatEntriesでエラーが発生。
An error occurred: Not an ARRAY reference at plugins/CatEntries2.8.pl line 95.
ということなので、とりあえず問題の95行目付近に以下を追加。
my @entries = (): + if(ref($entriesToFilter) ne ''ARRAY''){ + return @entries; + }; foreach my $e (@$entriesToFilter) {
これだけで再構築は行えるが、コードをあまり読んでいないのでこれで正しい動きが実現できているのかは解らない。とりあえずの対処。</mtcommentfields></mtifregistrationrequired>