こんにちは、ディレクターの八木です。
 
 * はじめに [#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テンプレート]]

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

アークウェブのサービスやソリューションはこちら