Home » January 2005 » A little hack for MTCommentFields

A little hack for MTCommentFields

年末に書いたエントリーですが、今更公開しておきます。

MTCommentFieldsはstaticオプションによって生成されるコメントフォームにstaticという名前のhiddenフィールドを生成します。

  • static=0の場合:
    <input type="hidden" name="static" value="0" />
    
  • static=1の場合、またはstaticオプションが未設定の場合:
    <input type="hidden" name="static" value="1" />
    

このstaticフィールドは、フォームのサブミット後、およびTypeKeyサイン・イン/サイン・アウト後、に誘導するページを「mt-comments.cgiが生成するコメント・リスト」にするか、「個別エントリーアーカイブ」にするかを選択する機能を持ちます。


問題になるのは、staticオプションとしてあらかじめ定められた静的な値(0/1)しか設定できないということです。ここで自然な拡張を試みます。

mt31-comment_fields.patch

このパッチは、MTCommentFieldsのstaticオプションの振る舞いを以下のように変更します。

  • static=0の場合:
    <input type="hidden" name="static" value="0" />
    
  • static=1の場合:
    <input type="hidden" name="static" value="1" />
    
  • staticオプションが未設定の場合:
    <input type="hidden" name="static" value="MTCommentPreviewIsStaticの値" />
    

つまり、MTCommentFieldsにstaticオプションを与えない場合、直前のフォームで入力されたstaticの値に従ったinputフィールドを生成します。これにより、コメントポストのエントリポイントとなるテンプレート(「mt-comments.cgiが生成するコメント・リスト」または「個別エントリーアーカイブ」)においてstaticかdynamicかを指定すれば、その後遷移するすべてのフォームにおいてその指定が有効になります。

このパッチは以下のエントリにあるようなコメンティングシステムを支援することができます。

小粋空間: ポップアップ画面を用いたコメント投稿(その3:公開テンプレート修正方法)

またそれだけではなく、誤ったstatic値をテンプレートに記述してしまうことで生じる混乱を避けることができます。例えば、個別エントリーアーカイブではstatic=1としてあるのに、コメントプレビューやコメントエラーのどちらか、あるいは両方にstatic=0と記述すると、コメント後に誘導されるページが状況によって異なるという混乱が生じます。が、こうしたテンプレート記述時の人為的なミスを幾分自動的に避けられます。

このエントリーのトラックバックURL: http://as-is.net/mt/mt-tb.cgi/223

Links referred to this entry

Comments (4)

  1. あけましておめでとうございます。
    昨年(特に年末)は色々お世話になりました。
    本年もどうぞよろしくお願い致します。

    年始早々の記事引用&トラックバック、ありがとうございます。
    こちらのパッチ、大変感謝しております!

    確認で恐縮ですが、生成されたページ内のサイン・イン/サイン・アウト用URLの query string にある static にも適用、という認識でよろしいでしょうか。

  2. 明けましておめでとうございます。

    > 生成されたページ内のサイン・イン/サイン・アウト用URLの query string にある static にも適用
    まったくもってその通りです。

  3. 明けましておめでとうございます。
    昨年はGmailの招待やMTの有用な情報で一方的にお世話になりました。
    寒い日が続きますが、お体に気をつけて下さい。
    今年もご活躍を楽しみにしております。

  4. CHOU-FLEURさん、明けおめでございます。今年のMTはどのような進展を見せるのかまったく見当も付きませんが、時間の許す範囲で適度にフォローしていきたいと思います。

    それにしても、2ちゃんのMTスレで「デバッガーのOgawaさんが…」とか紹介されるに至って、「おいおい、俺、デバッガーだったのかよっ!!」という感じ(笑)。

Post a comment

Remember me?