MTEnumVar Plugin
また、極小のプラグインを作ってみました。このプラグインは、単にカウンター機能を提供するだけの変数タグ <$MTEnumVar name="counterName"$> を実現します。
上記のMTEnumVar.zipを展開するとmt-enumvar.plとfunction.MTEnumVar.phpという2つのファイルが得られます。それぞれ静的生成用、ダイナミック・パブリッシング用で、前者は<MTDIR>/pluginsに、後者は<MTDIR>/php/pluginsに、コピーすれば使えるようになります。
以下では簡単に使い方を説明します。
テンプレートで <$MTEnumVar name="counterName"$> が呼び出されるたびに1, 2, 3,...と順に値を返します。nameで指定するカウンター名を変えると別のカウンターとして機能します。
<$MTEnumVar name="counterA"$> → 1を返す <$MTEnumVar name="counterA"$> → 2を返す <$MTEnumVar name="counterB"$> → 1を返す <$MTEnumVar name="counterA"$> → 3を返す <$MTEnumVar name="counterB"$> → 2を返す
また、このカウンターはMTSetVar/MTGetVarを使って、初期値を設定したり、値を参照したりすることができます。
<$MTEnumVar name="counterA"$> → 1を返す <$MTSetVar name="counterA" value="10"$> → counterAの初期値に10を設定 <$MTEnumVar name="counterA"$> → 11を返す <$MTEnumVar name="counterA"$> → 12を返す <$MTGetVar name="counterA"$> → couterAの値を取り出す(12を返す)
だいたい分かってきたと思いますが、MTSetVarやMTGetVarで値を格納・取り出しする領域と、MTEnumVarが値を取り出して1加えて格納し直す領域は共通になっています。単純ですが、想像力を働かせて使ってください。
私がなぜこのプラグインを作ったのかと言うと、それはinput要素などに振るtabindex属性のせいです。このtabindex属性はHTML 4.01/XHTML 1.0/1.1的には必須ではありませんが、アクセシビリティ的には必要なようです。
ようですが。一般的には特定の要素のtabindex属性の値がいくつになるのかというのは、よほど慎重に考えてテンプレートを設計しないと決まりません。論理的な構造から定まるべきなのでしょうが、現実的には(というかアクセシビリティの実現という意味では)論理的な構造はレイアウトに左右される側面があります。例えばよくある2カラム構造で検索フォームを右カラムからトップに移動しようとした場合を想像してみるとよいでしょう。
また、コンポーネントとしての独立性を考えるなら、あらかじめ一意の値が特定のテンプレートの特定の要素に振られているべきではないという言い方もできます。Movable Typeでは複数のコンポーネント(テンプレート)を結合することができますから、結合の有無や順序によって容易にtabindexの値は変わり得ます。
要するに私は、tabindexの値を人手で管理するのは非現実的で、MTEnumVarのようなプラグインで自動化するのが筋ではないかと思うわけです。例えば、MTEnumVarを以下のように(適当ですが)使うことでtabindexを自動的に連番で振ってくれます。テンプレートがモジュール化されていても生成されるアーカイブ内で一意かつ連番のtabindexが生成されます。
<form method="post" action="..."> <fieldset> <p>Author: <input tabindex="<$MTEnumVar name="tabindex"$>" name="author" value="" /></p> <p>E-mail: <input tabindex="<$MTEnumVar name="tabindex"$>" name="email" value="" /></p> <p>URL: <input tabindex="<$MTEnumVar name="tabindex"$>" name="url" value="" /></p> <p>Comments:<br /> <textarea tabindex="<$MTEnumVar name="tabindex"$>" name="text"></textarea></p> ... </fieldset> </form>
このエントリーのトラックバックURL: http://as-is.net/mt/mt-tb.cgi/206
ogawaさん。泣きそうです。
これで積年の悩みであった、「できること」と「できないこと」の壁がひとつなくなりました。
使わせていただきます。本当にありがとうございます。
しょぼいプラグインで恐縮です。ダイナミック・パブリッシング用のプラグインの習作なのです。
ありがちですが隠しパラメータとしてcountというのがあります。<$MTEnumVar name="XX" count="2"$>とかすると2個ずつ増えます。負の値を設定すれば減算されていきます。あとは<$MTEnumVar name="XX" zero_pad="5"$>とかすると5桁になるように頭に0が付きます(MTの元からある機能)。