[Sitecore][WFFM]フォームフィールドをカスタマイズ
概要:Web Froms for Marketers のフォーム日付フィールドをカスタマイズする手順のメモ書きです。
検証環境は次の通りです。
- Sitecore 5
- Sitecore 6
- Sitecore 7
Web Froms for Marketersのフォームにデーフォルトで必要なフィールドはそろえています。また、カスタムフィールドも簡単に追加することができます。お客さんの要求で既存のフィールをにちょっとしたカスタマイズが必要とされる場合はよくあります。今回、簡単な既存フィールドのフォーマットをカスタマイズする手順を書いてみたいです。
例えば、”日付の選択”というフィールをを使用する際にディフォールとのフォーマットは欧州(日 – 月 – 年)となっています。これを日本(年 – 月 – 日)フォーマットに変更してみよう。
まずこのフィールドを使用しているアセンブリとクラスをクラスを見つけよう。DLLでみでもいですし、date pickerで検索をかけるとフィールドアイテムが見つけて、そこで使用するクラスをすぐに見つける時もあります。
ライブラリでコードとみると、変更画必要とするのはに二箇所に箇所です。
このクラスをカスタマイズします。まず、クラスを追加します。追加する場所は開発者によって違ってきます。同じパスを使う開発者もいれば、カスタムコートを別のフォールターで管理する開発者もいます。また、別のプロジェクトを作成して別のライブラリで管理するところもあります。よく、カスタムロジック(CL)また、ビジネスロジック(BL)、カスタムロジックレーヤーやビジネスロジックレーヤーと呼ぶところもあります。個人的に別のぷロジェストで管理をすることをお勧めします。なぜなら、アップグレードする際に注意にすべき変更をレピューしやいです。また、別のdllですので、お客さんの要求で変更を行う際にサイトをこういったレーヤーで変更だけをし、サイト全体コンパイルせずに済む場合もあります。この例で同じパースを使用します。
コードをコンパイルした後、DatePickerのアセンブリとクラスを変更します。
これで次回日付の選択を使用する際にディフォルトで日本(年 – 月 – 日)のフォーマットになります。
#region using System; using System.ComponentModel; using System.Web.UI; #endregion namespace local.sc75.Website.Web.UI.Controls { using Sitecore.Form.Core.Attributes; using Sitecore.Form.Core.Utility; using Sitecore.Form.Core.Visual; [ValidationProperty("Text")] public class DatePicker : Sitecore.Form.Web.UI.Controls.DatePicker { // Methods public DatePicker() : this(HtmlTextWriterTag.Div) { } public DatePicker(HtmlTextWriterTag tag) : base(tag) { base.classAtributes["DateFormat"] = "yyyy-MM-dd"; base.classAtributes["startDate"] = "20000101T120000"; base.classAtributes["endDate"] = Sitecore.DateUtil.ToIsoDate(DateTime.Now.AddYears(1).Date); this.Text = Sitecore.DateUtil.ToIsoDate(DateTime.Now); } #region Public Properties [VisualProperty("Display Format:", 50)] [DefaultValue("yyyy-MM-dd")] [VisualFieldType(typeof(DateFormatField))] public new string DateFormat { get { return this.classAtributes["DateFormat"]; } set { this.classAtributes["DateFormat"] = value; } } #endregion } }