連絡先リスト
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
連絡先リストの定義はSitecore.Marketing.Definitions.ContactLists.ContactListDefinitionManagerクラスによって管理されます。
ContactListDefinitionManagerへのアクセス
ContactListDefinitionManagerはSitecore DIコンテナから利用可能です。クラスのコンストラクタに型DefinitionManagerBase<IContactListDefinition, ContactListDefinitionRecord>のパラメータを含め、コンテナからクラスを引き出すことで、コンテナがインスタンスを解決するのが望ましいです。
public MyClass(DefinitionManagerBase<IContactListDefinition, ContactListDefinitionRecord> contactListDefinitionManager) { ... }
コンテナを使ってクラスを構築できない場合は、サービスロケーターを使うことができます。このクラスはSitecore DIコンテナでも利用可能です:
using Sitecore.DependencyInjection; using Sitecore.Marketing.Definitions;
ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager
連絡先リストの定義
連絡先リストはSitecore.Marketing.Definitions.ContactLists名前空間のタイプを用いて定義されます。
using Sitecore.Marketing.Definitions.ContactLists; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace Documentation { public class AddContactList { public void Example() { Guid contactListId = Guid.NewGuid(); // Contact list ID CultureInfo contactListCulture = new CultureInfo("es"); // Contact list culture string contactListName = "Newly created contact list"; // Contact list name DateTime creationDate = DateTime.UtcNow; // Contact list creation date string createdBy = "sitecore\admin"; // Contact list creator
ContactListDefinition contactList = new ContactListDefinition(contactListId, "Contact list item name", contactListCulture, contactListName, creationDate, createdBy);
contactList.Owner = "sitecore\\maw"; contactList.Type = "Folder"; } } }
!重要TypeとOwnerを除くすべてのContactListDefinitionプロパティは旧式化されていますが削除されていません。これはList Managerなどのコンポーネントの移行をサポートするためです。一部のプロパティは後のリリースで削除または移動される可能性があることに注意してください。
連絡先リストの保存
連絡先リストを定義したら、定義マネージャーのSaveAsync() メソッドを呼び出して保存できます。
using Sitecore.DependencyInjection; using Sitecore.Marketing.Definitions.ContactLists; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using Sitecore.DependencyInjection; using Sitecore.Marketing.Definitions;
namespace Documentation { public class SaveContactList { public async void Example() { Guid contactListId = Guid.NewGuid(); // Contact list ID CultureInfo contactListCulture = new CultureInfo("es"); // Contact list culture string contactListName = "Newly created contactList"; // Contact list name DateTime creationDate = DateTime.UtcNow; // Contact list creation date string createdBy = "sitecore\admin"; // Contact list creator
ContactListDefinition contactList = new ContactListDefinition(contactListId, "Contact list item name", contactListCulture, contactListName, creationDate, createdBy);
contactList.Owner = "sitecore\\maw"; contactList.Type = "Folder";
IDefinitionManager
await manager.SaveAsync(contactList); } } }
また、セーブ中にtrueSaveAsync()メソッドの2つ目のパラメータに渡すことで連絡先リストを有効化することも可能です。
manager.SaveAsync(contactList, true);
連絡先リストの有効化
連絡先リストはExperience Manager外で使用可能になる前に有効化しなければなりません。連絡先リストは保存時にSaveAsync()メソッドのactivate(2つ目の)パラメータにtrueを渡すことで有効化できます。
manager.SaveAsync(contactList, true);
連絡先リストは、ActivateAsync() メソッドを使ってセーブを呼ばずに有効化することも可能です。
manager.ActivateAsync(contactListId);
ActivateAsync()方法は連絡先リストのIDを取り、連絡先リスト定義モデルを必要としません。
連絡先リストの削除
連絡先リストを削除するには、マネージャーのDelete() メソッドを使います。個々の文化は定義から削除できず、定義全体のみ削除できます。メソッド呼び出しに提供される文化は、null(デフォルト値)またはCultureInfo.InvariantCultureであるべきです。
using Sitecore.DependencyInjection; using Sitecore.Marketing.Definitions.ContactLists; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using Sitecore.DependencyInjection; using Sitecore.Marketing.Definitions;
namespace Documentation { public class SaveContactList { public async void Example() { Guid contactListId = Guid.NewGuid(); // Contact list ID
IDefinitionManager
manager.Delete(contactListId); } } }
連絡先リストを作成してください
単一の連絡先リストは、マネージャーのGet() 方法のいずれかを用いてIDで取得できます。
using Sitecore.DependencyInjection; using Sitecore.Marketing.Definitions.ContactLists; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using Sitecore.DependencyInjection; using Sitecore.Marketing.Definitions;
namespace Documentation { public class GetContactList { public async void Example() { Guid contactListId = Guid.NewGuid(); // Contact list ID
IDefinitionManager
// Get 'en' contact list, including inactive versions manager.Get(contactListId, new CultureInfo("en"), true); } } }
別名で連絡先リストを取得する
また、別名から連絡先リストを取得することもできます:
CultureInfo contactListCulture = new CultureInfo("fr-fr"); var contactListDefinitionByAlias = definitionManager.GetByAlias("My alias", contactListCulture);
既存の連絡先リストの更新
既存の連絡先リスト定義を更新するには、IDで連絡先リストを取得し、連絡先リストのプロパティを編集し、保存/有効化して使用してください:
using Sitecore.DependencyInjection; using Sitecore.Marketing.Definitions.ContactLists; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using Sitecore.DependencyInjection; using Sitecore.Marketing.Definitions;
namespace Documentation { public class UpdateContactList { public async void Example() { Guid contactListId = Guid.NewGuid(); // Contact list ID
IDefinitionManager
// Get 'en' contact list, including inactive versions var contactList = manager.Get(contactListId, new CultureInfo("en"), true);
contactList.Owner = "sitecore\\newowner"; contactList.Name = "New name";
manager.SaveAsync(contactList, true); } } }
すべての連絡先リストの取得
.GetAll()メソッドはマネージャーからすべての連絡先リストを取得するために使用できます。定義が多数存在する場合があるため、この方法はページングをサポートしています。返される値は結果の1ページ分です。
using Sitecore.DependencyInjection; using Sitecore.Marketing.Definitions.ContactLists; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using Sitecore.Marketing.Definitions; using Sitecore.Marketing.Core;
namespace Documentation { public class GetAllContactList { public async void Example() { Guid contactListId = Guid.NewGuid(); // Contact list ID
IDefinitionManager
// Get 'en' contact list, including inactive versions var contactList = manager.Get(contactListId, new CultureInfo("en"), true);
// Get All with defaults which will be first page, page size 20, latest active versions only
ResultSet<DefinitionResult
// Get page 2
ResultSet<DefinitionResult
// Include inactive versions
ResultSet<DefinitionResult
結果にアクセスするには、結果のDataPageプロパティを使いましょう。
IContactListDefinition contactList = page1contactLists.DataPage.ElementAt(0);
その結果には、定義の総数や現在のページインデックス、ページサイズを公開するプロパティも含まれています。
long totalDefinitionCount = contactLists.Total; int pageNumber = page1contactLists.PageNumber; int pageSize = contactLists.Count;