1. List Manager

チュートリアル : List 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:ContactDataModel
    {
         [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<PhoneNumber>().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設定ファイルを作成して、設定の変更を適用します。

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration xmlns:set="http://www.sitecore.net/xmlconfig/set/" xmlns:role="http://www.sitecore.net/xmlconfig/role/">
      <sitecore role:require="Standalone or ContentManagement">
         <services>
            <configurator type=" ContactListExtender.CustomServiceConfigurator, ContactListExtender" />
         </services>
         <settings>
    	  <!-- Adds the PhoneNumber facet to be loaded  -->
              <setting name="ListManagement.Contacts.FacetsToRead" set:value="ListSubscriptions|Personal|Emails|PhoneNumber" />
         </settings>
      </sitecore>
    </configuration>
  2. 設定ファイルを <website_path>\App_Config\Includeフォルダにコピーします。

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