Page Top

Movable Type (MT) 「コメント詳細」モジュールにタブ文字(ハードタブ)があると、コメント欄のページネーション機能がうまく動作しなくなる

October 19, 2012

今回のは、なかなか手強かったです。ダイナミックパブリッシングでも、スタティックパブリッシングでも不具合が発生していました。この不具合の原因探しに丸々4日かかりました。そして、この不具合の詳細を現象再現方法も加え、昨日MTさんの方にレポートさせていただきました。これがまた説明文を書くのに1日程かかってしまい(一発で読んでわかる説明を心掛けているので、結構時間がかかるのです・・)、なのでトータルにすると、この不具合の原因探しと解決法、そしてレポートにかかった時間は、約1週間ということになります。

まさかタブ文字(ハードタブ)が関係しているとは思いませんでした。というのも、他のテンプレートにタブ文字(ハードタブ)が含まれていても何ら問題はないからです。ちなみに、インデントが「タブ文字」で行われるのは「ハードタブ」、インデントが「半角スペース」で行われるのは「ソフトタブ」と呼ばれるのだそうです。(By Creatiblogさんの記事「DreamweaverでPHPコーディング中のインデントをタブから半角スペースにする方法」より。)

今私が使用させていただいているテキストエディタのEmEditorさんはなかなかの優れもので、インデントの方法として「ハードタブ」と「ソフトタブ」が選べるようになっています。何も設定していない時は、インデントは「タブ文字」で入力され、インデントの方法として「タブとして半角スペースを挿入」というものがあり、それにチェックを入れると、タブを押すと自動的に半角スペースに変換してくれるというスグレモノになっています。素晴らしい!

具体的に影響していたテンプレートは、モジュールの「コメント詳細」テンプレートでした。このテンプレート内に1つでも「タブ文字」が含まれているコーディングが存在すると、コメント欄のページネーションがうまく動作しなくなります。具体的な症状としては、「次>>」のリンクをクリックしても、永遠と次のコメントをローディングし続けようとします。ちなみに、「タブ文字」が1つだけ、つまりコーディングが何もなく、ただ「タブ文字」だけが1つ存在するだけなら、ページネーション機能自体には影響はないようです。あくまでも、「コーディングと一緒にタブ文字」が存在すると、というのがポイントのようです。

また、このモジュールテンプレートである「コメント詳細」内に、「MTInclude」などで別のモジュールをIncludeするとしますと、たとえ「コメント詳細」モジュールテンプレート内に「タブ文字」が1つも存在していなくても、Includeするモジュールの方に「タブ文字」がコーディングと共に存在する場合、これまた不具合の原因になるので要注意です。

他にも、ダイナミックパブリッシングにおいてだけの不具合だったのですが、コメント欄のページネーション機能で表示されるコメントの順序がおかしくなる件があったので、こちらもMTさんの方へまとめて昨日報告させていただきました。ぎりぎり日本は金曜日だったので、来週にはお目通しいただけるのではないかと思っています。

PS:Movable Typeのテンプレート編集画面では、通常「タブ文字」は挿入できませんが、小粋空間さんの「TextareaTabEnablerプラグイン」というものがあり、このプラグインを入れると、テンプレート編集画面でも「タブ文字」が挿入できるようになるようです。

【後記2012年10月22日:無事にMTさんの方にバグ登録して頂けました。】

最新記事