2009年4月アーカイブ

Movable Type 4.2 がリリースされていることはわかっていたのだけど、テンプレートとか変更するのがいろいろと面倒なので(特にコメントフォーム周り)ずっと 4.15 のままにしていた。やっと一昨日の8日になってバージョンアップ作業を行った。もうすでにマイナーバージョンは 4.25 にまでなっていたけど。

作業の際につまづいた点、対処方法などを備忘録としてここに書いておく。4.25 になってモーションブログだとかアクションストリームといった機能が追加されたようなのだけど、使い方がわからないし取り敢えずあまり関心もないのでそれについてはパス。


コメントフォーム

コメントフォーム周りのことは小粋空間: Movable Type 4.1 と 4.2 の差分(コメント入力フォーム)を参考に修正。しかし「サインインできます」のメッセージが表示されないなど、どうしてもうまくいかなかった。しばらく悩んでいたが、初期化した mt.js (うちのところでは MT3時代の名残りで mt-site.js というファイル名なのだけど)の最初の方で<mt:Ignore>で囲まれている部分を出力されるように変更してみたらうまくいった。

<mt:Ignore>
/*  The following functions and variables are here to support legacy MT templates.
    If you have refreshed your JavaScript template but still use older MT comment
    templates, you may need to uncomment this block in order for those templates 
    to work properly. To use, simply remove the 'mt:Ignore' tags wrapping this
    block of code.
*/
    function hideDocumentElement(id) { return mtHide(id) }
    function showDocumentElement(id) { return mtShow(id) }
    function individualArchivesOnLoad() { return mtEntryOnLoad() }
    ...
    var captcha_timer;
</mt:Ignore>

この部分を以下のように変更。

<mt:Ignore>
/*  The following functions and variables are here to support legacy MT templates.
    ...
    block of code.
*/
</mt:Ignore>
    function hideDocumentElement(id) { return mtHide(id) }
    ...
    var captcha_timer;

これで万事うまくいった。

追記: 2009年10月15日

その後の調査の結果、この不具合はエントリー・テンプレートの body タグに onload="individualArchivesOnLoad(commenter_name)" というイベント・ハンドラが指定されていたことが原因らしいと判明。おそらくこの関数(と変数)が定義されていないことでエラーとなっていたものと思われる。このアトリビュートを削除して再構築したところ、上記の変更を元に戻しても正常に動作するようになった。


ページ分割

このブログ自体は今のところ全てスタティックに出力しているのだけど、メインのブログの方ではスタティックとダイナミックを併用していて、 Smarty の機能を利用してページ分割を行っていた。ところが 4.2 からはMT本体にページ分割の機能が加わったというので、それを利用してみることにした。参考にしたのは Six Apart の公式のアナウンスWingMemo: ダイナミック・パブリッシングで頁分割(8) MT4.2公式編

ここに書いてある通りにして大体うまくいったのだけど、全体のページ数が2ページになる時に1ページ目から次のページへのリンクが生成されないという問題が生じていることが発覚。どうすればいいのかわからず途方に暮れていたが、やみくもに検索してみたら同じ問題に遭遇していともあっさりと解決してしまったというすご腕の方のページを発見した。MT4.2のダイナミックパブリッシングでのページ分割 - kwLogがそれなのだけど、この通りにしたら見事に解決した。

この方がさらにすごいのはページキャッシュとの両立の問題をも解決しているところ。これについては今までMovable TypeでPHPダイナミックパブリッシングとキャッシュとページ分割を同時に利用する方法::レビログで紹介されているmtview.phpを修正する方法で対応していたのだけど、これだと結局アドレスに‘?’のつくページはキャッシュされないことになる。ところがMovable Type 4.2でキャッシュ付きダイナミックパブリッシングでのページ分割 - kwLogではMT本体のファイルをいじることによって全てのページがキャッシュされるようになる方法が紹介されている。早速やってみたが全く問題なく動作していて、実にすごいとしかいいようがない。


認証方式

4.2になって新たにいくつかの認証方式に対応するようになった。特に GoogleYahoo!ミクシィのようなメジャーなサービスのアカウントでサインインできるようになったというのは大きなことかも知れない。私がやっているようなブログでは TypePad のアカウントを持っている閲覧者なんておそらくあまりいないだろうから。

ところが Google とミクシィのアカウントでの認証を可能にするには Perl のモジュールが足りないらしい。調べてみると私が利用しているのと同じ XREA でうまく対応した方のページを発見。XREAでMovable Type 4.25のGoogle認証を使う設定 - BBBLOGを参考にやってみたら Google の方はうまくいった。ただし私はシンボリックリンクは mt/extlib 以下に作成した。多分その方が自然だと思うので。

ただこれでもまだミクシィの方はうまくいかない。調べてみるとプラグインを修正してやる必要があるらしい。Movable Type 備忘録 - mixiComment プラグインを参考に mixiComment.pl を修正したらうまくいった。


こうやって頻繁にバージョンアップされて機能が豊富になっていくというのは有り難いことである反面、ついていくのがなかなか大変なことでもある。まあ今回は無事作業を終えられてよかった。参考にさせていただいた各ページの作者のみなさんに感謝。

ウェブページ

このアーカイブについて

このページには、2009年4月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2008年10月です。

次のアーカイブは2009年9月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

OpenID対応しています OpenIDについて
Powered by Movable Type 4.38