- 追加された行はこの色です。
- 削除された行はこの色です。
こんにちは、ディレクターの八木です。
* はじめに [#n9a36b91]
Movable Typeのテンプレートをカスタマイズして応募フォームつきのエントリーを生成するようにしました。特別なPlugInは不要で定型のフォームをイベントごとに一部差し替えて使い回したいケースに適しています(フォームの処理CGIは別途必要です)。
&ref(20070426_1123.png);
#blikimore
*目次 [#u1d8a29d]
#contents();
**要件 [#j09f358e]
- 月に何件かのイベントを開催しており、開催要項のお知らせをすると共に、それぞれ個別に応募フォームを設けたい。
- 応募フォームの入力項目(数・要素)は毎回同じだが、イベント名や参加希望日など毎回value値が変わる項目がある。
- イベントのお知らせはブログ(Movable Type)のエントリーとして配信することにし、各エントリー内に応募フォームも表示させる。
- お知らせだけでフォームを必要としないケースや、応募終了時にはフォーム部分を非表示にしたい。
**実装のポイント [#h8641491]
-1イベント-1エントリーで配信することにし、エントリー・アーカイブのテンプレート内に応募フォームを埋め込んだ。メンテナンス性を考慮して、応募フォーム部分はモジュール化しておく。
- 投稿時のユーザビリティを考慮してRight Fieldsを使った(ただし、やろうと思えばMTの標準だけでも実装可能)
***フォームを表示する/しないの切り替え [#dec5b1c4]
Right Fieldsで「募集中」のフィールドを設けた(チェックボックス)。このフィールド値のある/なしでフォームの表示モジュールのインクルードする/しないを判定する。
<MTExtraFields>
<MTIfExtraField field="formActive">
<$MTInclude module="応募フォームのモジュール"$>
</MTIfExtraField>
</MTExtraFields>
-※"formActive"はRight Fieldsを使って追加した入力フィールド
-※Right Fieldsを使わないなら<MTIfNonEmpty tag="EntryMore">〜</MTIfNonEmpty> などを使って同じことができる。
|&ref(20070426_0948.png,,50%);|
***イベント名など毎回変わる要素に対応する [#x9a4dfbd]
Right Fieldsでイベント名、開催日などのフィールドを追加して、フォーム内に埋め込むことにした
参加イベント:<$MTEventTitle$>
<input name="event" type="hidden" value="<$MTEventTitle$>" />
-※<$MTEventTitle$>はRight Fieldsを使って追加したフィールドのカスタム・テンプレート・タグ
***イベント種別によってフォームを切り替える [#e1765058]
イベント種別によって入力項目のパターンが2種類あったので、2パターンのフォーム部分をそれぞれモジュール化し、カテゴリ判別でいずれかのフォームを呼び出すようにした。
<!--
"講演会"カテゴリのエントリーには講演会用フォームのフォームを表示させる
-->
<MTIfCategory name="講演会">
<MTInclude module="講演会用フォーム">
</MTIfCategory>
<!--
"説明会"カテゴリのエントリーには説明会参加フォームを表示
-->
<MTIfCategory name="説明会">
<MTInclude module="説明会用フォーム">
</MTIfCategory>
<!-- 上記どちらでもなければフォームは表示されない -->
・・・
** コメント [#n85da528]
- 定型のフォームをイベントごとに一部差し替えて使い回したいケースで有用。
- フォーム用の特別なプラグインなしで実現できる。でもRight Fieldsはあったほうがベター。
- MT標準の<MTIfNonEmpty tag="・・・">にしろ、Right Fieldsの<MTIfExtraField field="・・・">にしろ ELSE文が使えないので複雑な分岐処理には向かない。例えば「募集中」のチェックがあったら(IF)フォームを表示して、なかったら(ELSE)「終了しました」と表示させたい程度の簡単なことでも、エレガントな実装は難しい。
** 参考:フォーム関連のPlugIn [#u9fcca4f]
-[[メールフォームプラグイン>http://www.h-fj.com/blog/archives/2007/01/23-111038.php]]
--ブログサイトにいわゆるお問い合わせフォームを追加するプラグイン。藤本 壱さんが開発。
--CGI(フォームの処理プログラム部分)も同梱。
--Ajax対応らしい
-[[JMForm>https://sourceforge.net/projects/jmforms/]]
--エントリー内に、フォームを挿入するプラグイン。フォーム項目が毎回変わるならこれを使うとよさそう。
--[[世界中の1%の人々へ - 今日の開発::Movble Typeのエントリーにフォームを追加するプラグイン、JMForm http://www.dakiny.com/archives/movable-type/timcejmform_movble_type/]] でTinyMCEに組み込みTinyMCE Plugin for Movable Typeの拡張機能キットとして配布する予定とのこと
tag: [[tag/MT]],[[tag/MTテンプレート]]