---
title: "ウォークスルー:List Managerを拡張して連絡先リストのカスタムカラムを表示する方法"
slug: "walkthrough--extending-the-list-manager-to-show-custom-columns-in-a-contact-list"
abstract: "List Managerを拡張して、連絡先リストのカスタムカラムを表示する方法。"
---
# ウォークスルー:List Managerを拡張して連絡先リストのカスタムカラムを表示する方法

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

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

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

このウォークスルーを終えた後は、カスタムファセットを表示するために [連絡先リストにカラムを追加](https://doc.sitecore.com/xp/en/users/104/sitecore-experience-platform/add-a-column-to-the-contacts-list.html) してください。

## デフォルトの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フォルダにコピーしてください。