1. List Manager

ウォークスルー
Managerを拡張して連絡先リストのカスタムカラムを表示する方法

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

特定の連絡先の側面データを表示するには、連絡先リストに表示される列をカスタマイズできます。これは、連絡先リストのテーブルに追加の列(例えば電話や都市番号)を入れたい場合に役立ちます。デフォルトでは、連絡先リストのテーブルにはメールアドレス、名前、姓のみが含まれています。

このウォークスルーでは、以下の方法を説明します:

  • デフォルトのList Managerモデルを拡張するためにモデルを作成・カスタマイズする
  • 新しい設定ファイルを作成する

このウォークスルーを終えた後は、カスタムファセットを表示するために 連絡先リストにカラムを追加 してください。

デフォルトのList Managerモデルを拡張するためにモデルを作成・カスタマイズする

まずは新しいプロジェクトを作成し、モデルを保存し、新しいモデルをカスタマイズしてデフォルトのList Managerモデルを拡張します。

デフォルトのList Managerモデルを拡張するためにモデルを作成・カスタマイズするには:

  1. Visual Studioでは、例えばContactListExtenderというプロジェクトを作成します。

  2. Sitecore.ListManagement.Services.Model.ContactDataModelを継承するContactDataModelWithPhoneNumberクラスを作成します。

  3. カスタムモデルクラスにカスタムフィールド(例えばPhoneNumber)を追加します。

    public class ContactDataModelWithPhoneNumber

    { Required, MaxLength(50) public string PhoneNumber { get; set; } }

  4. Sitecore.ListManagement.Services.Mappers.IListSubscribersMapperインターフェースを継承するListSubscribersWithPhoneNumberMapperクラスを作成します。

  5. 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; }

  6. デフォルトの実装を置き換えるCustomServiceConfiguratorクラスを作成します。

    public void Configure(IServiceCollection serviceCollection) { var serviceToRemove = serviceCollection .Where(service => service.ServiceType == typeof(IListSubscribersMapper)) .FirstOrDefault(); serviceCollection.Remove(serviceToRemove); serviceCollection.AddTransient<IListSubscribersMapper, ListSubscribersWithPhoneNumberMapper >(); }

設定ファイルを作成する

次に、新しい設定ファイルを作成し、設定変更を適用する必要があります。

設定ファイルを作成するには:

  1. 設定変更を適用するためのContactListExtender設定ファイルを作成します。

  2. 設定ファイルを <website_path>\App_Config\Includeフォルダにコピーしてください。

この記事を改善するための提案がある場合は、 お知らせください!