ウォークスルー Managerを拡張して連絡先リストのカスタムカラムを表示する方法
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
特定の連絡先の側面データを表示するには、連絡先リストに表示される列をカスタマイズできます。これは、連絡先リストのテーブルに追加の列(例えば電話や都市番号)を入れたい場合に役立ちます。デフォルトでは、連絡先リストのテーブルにはメールアドレス、名前、姓のみが含まれています。
このウォークスルーでは、以下の方法を説明します:
- デフォルトのList Managerモデルを拡張するためにモデルを作成・カスタマイズする
- 新しい設定ファイルを作成する
このウォークスルーを終えた後は、カスタムファセットを表示するために 連絡先リストにカラムを追加 してください。
デフォルトのList Managerモデルを拡張するためにモデルを作成・カスタマイズする
まずは新しいプロジェクトを作成し、モデルを保存し、新しいモデルをカスタマイズしてデフォルトのList Managerモデルを拡張します。
デフォルトのList Managerモデルを拡張するためにモデルを作成・カスタマイズするには:
-
Visual Studioでは、例えばContactListExtenderというプロジェクトを作成します。
-
Sitecore.ListManagement.Services.Model.ContactDataModelを継承するContactDataModelWithPhoneNumberクラスを作成します。
-
カスタムモデルクラスにカスタムフィールド(例えばPhoneNumber)を追加します。
public class ContactDataModelWithPhoneNumber
{ Required, MaxLength(50) public string PhoneNumber { get; set; } } -
Sitecore.ListManagement.Services.Mappers.IListSubscribersMapperインターフェースを継承するListSubscribersWithPhoneNumberMapperクラスを作成します。
-
MapSubscribersメソッドをオーバーライドしてContactDataModelWithPhoneNumberモデルを返します。
public ContactDataModel MapSubscribers(Contact contact) { var contactDataModel = new ContactDataModelWithPhoneNumber { Id = (contact.Id ?? Guid.Empty).ToString() };
contactDataModel.Email = contact.Emails()?.PreferredEmail?.SmtpAddress; contactDataModel.FirstName = contact.Personal()?.FirstName; contactDataModel.LastName = contact.Personal()?.LastName; var contactIdentifier = contact.Identifiers.FirstOrDefault(x=> x.Source == "ListManager") ?? contact.Identifiers.FirstOrDefault(); contactDataModel.Identifier = contactIdentifier?.Identifier; contactDataModel.IdentifierSource = contactIdentifier?.Source; contactDataModel.PhoneNumber = contact.GetFacet
().Number; return contactDataModel; } -
デフォルトの実装を置き換えるCustomServiceConfiguratorクラスを作成します。
public void Configure(IServiceCollection serviceCollection) { var serviceToRemove = serviceCollection .Where(service => service.ServiceType == typeof(IListSubscribersMapper)) .FirstOrDefault(); serviceCollection.Remove(serviceToRemove); serviceCollection.AddTransient<IListSubscribersMapper, ListSubscribersWithPhoneNumberMapper >(); }
設定ファイルを作成する
次に、新しい設定ファイルを作成し、設定変更を適用する必要があります。
設定ファイルを作成するには:
-
設定変更を適用するためのContactListExtender設定ファイルを作成します。
-
設定ファイルを <website_path>\App_Config\Includeフォルダにコピーしてください。