---
title: "マーケティング定義へのアクセス"
slug: "accessing-marketing-definitions"
abstract: ""
---
# マーケティング定義へのアクセス

トラッキングの文脈では、イベントをトリガーする際にマーケティング定義へのアクセスが必要です。例えば、PageEventDataクラスはイベントエイリアスでインスタンス化されなければなりません。イベントのエイリアスは、ベースIDefinitionのAliasプロパティで表されます。

IDefinition ev = Sitecore.Analytics.Tracker.MarketingDefinitions.GoalsNewsletterSignupGoal.NewsletterGoalID;

if (ev != null)
{
 var newsletterId = Guid.NewGuid(); // Fake newsletter ID
 var pageData = new Sitecore.Analytics.Data.PageEventData(ev.Alias, ev.Id);

 pageData.Data = newsletterId.ToString();

 Sitecore.Analytics.Tracker.Current.CurrentPage.Register(pageData);
}

トラッカーからマーケティングの定義にアクセスする方法は2つあります:

-   GoalsやCampaignsなどのコレクションを定義する Sitecore.Analytics.Tracker.MarketingDefinitions プロパティを使用します。
-   定義マネージャーを使いましょう。例えば PageEventDefinitionManager

以下の例は、MarketingDefinitionsプロパティを使ってすべてのキャンペーンを取得し、IDでキャンペーンを取得する方法を示しています。

var definitionID = Guid.NewGuid();

IDefinition campaign = Sitecore.Analytics.Tracker.MarketingDefinitions.CampaignsdefinitionID;

あるいは、[定義マネージャー](https://doc.sitecore.com/xp/ja/developers/91/sitecore-experience-platform/definition-managers.html "Definition managers")を活用することもできます。すべての定義タイプには専用の定義マネージャーがあります。以下の例は、キャンペーンマネージャーを使ってキャンペーンを開始する方法を示しています:

using System;
using System.Globalization;
using Sitecore.DependencyInjection;
using Sitecore.Marketing.Definitions;
using System.Globalization;
using Sitecore.Marketing.Definitions.Campaigns;

namespace Documentation
{
 public class GetCampaign
 {
 public void Example()
 {
 var definitionManager = ServiceLocator.ServiceProvider.GetDefinitionManagerFactory().GetDefinitionManager<ICampaignActivityDefinition>();

 Guid campaignActivityID = Guid.NewGuid(); // Campaign activity ID

 // Call Get() to get concrete campaign by ID and culture
 var campaignActivityDefinition = definitionManager.Get(campaignActivityID, System.Globalization.CultureInfo.InvariantCulture); // Specific culture can also be used
 }
 }
}

> !注定義マネージャーを使うことで、自分のコードのユニットテストが簡単にできます。