---
title: "ページイベント"
slug: "page-events"
abstract: ""
---
# ページイベント

ページイベントの定義はSitecore.Marketing.Definitions.PageEvents.PageEventDefinitionManagerクラスによって管理されます。

> !注ページイベントは専門的なイベントです。IPageEventDefinitionIEventDefinitionを継承します。

## PageEventDefinitionManagerへのアクセス

PageEventDefinitionManagerはSitecore DIコンテナから利用可能です。クラスのコンストラクタに型DefinitionManagerBase<IPageEventDefinition, PageEventDefinitionRecord>のパラメータを含め、コンテナからクラスを引き出すことで、コンテナがインスタンスを解決するのが望ましいです。

public MyClass(DefinitionManagerBase<IPageEventDefinition, PageEventDefinitionRecord> pageEventDefinitionManager)
{
 ...
}

コンテナを使ってクラスを構築できない場合は、サービスロケーターを使うことができます。このクラスはSitecore DIコンテナでも利用可能です:

using Sitecore.DependencyInjection;
using Sitecore.Marketing.Definitions;

ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager<IPageEventDefinition>();

## ページイベントの定義

ページイベントはSitecore.Marketing.Definitions.PageEvents.Model名前空間の型を用いて定義されます。

Guid pageEventId = Guid.NewGuid(); // Page event ID
CultureInfo pageEventCulture = new CultureInfo("es"); // Page event culture
string pageEventName = "Newly created page event"; // Page event name
DateTime creationDate = DateTime.UtcNow; // Page event creation date
string createdBy = "sitecore\\admin"; // Page event creator

PageEventDefinition pageEvent = new PageEventDefinition(pageEventId, "Page event item name", pageEventCulture, pageEventName, creationDate, createdBy);

pageEvent.ShowInXfileAsLatestEvent = true;
pageEvent.ShowInXfileEventsList = true;
pageEvent.EngagementValuePoints = 20;

### ライブイベント

IsLiveEventプロパティは基本EventDefinitionクラスの一部であり、マーケティングオートメーションがイベントをセッション終了時ではなく即時処理するかどうかを判断するために使用されます。[ライブイベント処理](https://doc.sitecore.com/xp/ja/developers/103/sitecore-experience-platform/marketing-automation-plan-and-activity-enrollment.html "Marketing Automation plan and activity enrollment")についてさらに詳しくはこちらをご覧ください。

## ページ保存イベント

ページイベントを定義したら、定義マネージャーのSaveAsync() メソッドを呼び出すことで保存できます。

Guid pageEventId = Guid.NewGuid(); // Page event ID
CultureInfo pageEventCulture = new CultureInfo("es"); // Page event culture
string pageEventName = "Newly created page event"; // Page event name
DateTime creationDate = DateTime.UtcNow; // Page event creation date
string createdBy = "sitecore\\admin"; // Page event creator

PageEventDefinition pageEvent = new PageEventDefinition(pageEventId, "Page event item name", pageEventCulture, pageEventName, creationDate, createdBy);

pageEvent.AdditionalRegistrationsAreIgnored = true;
pageEvent.IsMonetaryValueApplicable = true;

 PageEventDefinitionManager manager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager<IPageEventDefinition>();

manager.SaveAsync(page event);

また、セーブ中にページイベントをtrueSaveAsync()メソッドの2つ目のパラメータに渡すことで、ページイベントを有効化することもできます。

manager.SaveAsync(page event, true);

## ページイベントの有効化

ページイベントは管理外で利用可能になる前に有効化しなければなりません。ページイベントは保存時にtrueSaveAsync()メソッドのactivate(2つ目の)パラメータに渡すことで有効化できます。

manager.SaveAsync(pageEvent, true);

ページイベントは、ActivateAsync() メソッドを用いて保存を呼び出さずに有効化することも可能です。

manager.ActivateAsync(pageEventId);

ActivateAsync()メソッドはページイベントのIDを取り、ページイベント定義モデルを必要としません。

## ページイベントの削除

ページイベントを削除するには、マネージャーのDelete() メソッドを使います。個々のカルチャーは定義から削除できず、定義全体のみ削除できます。メソッド呼び出しに提供されるカルチャーはnull(デフォルト値)かCultureInfo.InvariantCultureのいずれかであるべきです。

manager.Delete(pageEventId);

## ページイベントの取得

マネージャーのGet() メソッドのいずれかを使えば、単一ページのイベントをIDで取得できます。

Guid pageEventId = Guid.NewGuid(); // Ensure this is the ID of an existing page event

// Get by ID and culture. Will get the latest active version
IPageEventDefinition pageEvent = manager.Get(pageEventId, new CultureInfo("da"));

// Get by ID and culture. Will get the latest version, including if the version is inactive
IPageEventDefinition pageEvent = manager.Get(pageEventId, new CultureInfo("da"), true);

### 別名で連絡先リストを取得する

また、ページイベントの [別名](https://doc.sitecore.com/xp/ja/developers/103/sitecore-experience-platform/definition-aliases.html "Definition aliases")から取得することも可能です:

CultureInfo pageEventCulture = new CultureInfo("fr-fr");
var pageEventDefinitionByAlias = definitionManager.GetByAlias("My alias", pageEventCulture);

## 既存のページイベントを更新する

既存のページイベント定義を更新するには、IDでページイベントを取得し、ページイベントを編集します

Guid pageEventId = Guid.NewGuid(); // Ensure this is the ID of an existing page event

// Get by ID and culture. Will get the latest active version
IPageEventDefinition pageEvent = manager.Get(pageEventId, new CultureInfo("da"));

// Make updates to page event
pageEvent.Name = "Updated name";

// Save to update
manager.SaveAsync(pageEvent);

## すべてのページイベントの取得

GetAll()メソッドはマネージャーからすべてのページイベントを取得するために使用できます。定義の数が多岐にわたるため、このメソッドはページングをサポートしています。返却値は結果の1ページ分です。

// Get All with defaults which will be first page, page size 20, latest active versions only
 ResultSet<DefinitionResult<IPageEventDefinition>> pageEvents = manager.GetAll(new CultureInfo("da"), new RetrievalParameters<IPageEventDefinition, string>());

 // Get page 2
 ResultSet<DefinitionResult<IPageEventDefinition>> page2pageEvents = manager.GetAll(new CultureInfo("da"), new RetrievalParameters<IPageEventDefinition, string>(pageNumber: 2));

 // Include inactive versions
ResultSet<DefinitionResult<IPageEventDefinition>> page1pageEvents = manager.GetAll(new CultureInfo("da"), new RetrievalParameters<IPageEventDefinition, string>(), true);

結果にアクセスするには、結果のDataPageプロパティを使いましょう。

IPageEventDefinition page event = page1pageEvents.DataPage.ElementAt(0);

その結果には、定義の総数や現在のページインデックス、ページサイズを公開するプロパティも含まれています。

long totalDefinitionCount = page1pageEvents.Total;
int pageNumber = page1pageEvents.PageNumber;
int pageSize = page1pageEvents.Count;