How to Display Targeted Advertisements
You can target advertisements through page group or user profiles. This topic demonstrates how to target users based on a page group.
To display targeted advertisements
Create a TargetingContextProfile. Specify the PageGroup ad that you want.
Create a ContentSelector object and set its properties.
Set the ad Size.
Use GetContent to retrieve ad content.
Bind the results to a repeater.
Dump out trace messages.
Example
The following code creates a targeting profile, a user profile, runs the ContentSelector object, and displays targeted advertisements on an ASP.NET Web form.
TargetedAd.aspx
<%@ Page Language="C#" Trace="false" AutoEventWireup="true" CodeFile="TargetedAd.aspx.cs" Inherits="TargetedAd" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
<title>Code to Display Targeted Advertisements</title>
</head>
<body>
<form id="Targeting" method="post" >
<h3 id="H31" >
Display an advertisement targeting the UserObject and TargetingContext.
profiles.</h3>
<h4 class="dtH4">You must create an ad within a "<b>Sports</b>" page group
before running this example. Otherwise no ads will be returned.
You can also change the page group within the code to work with other page groups.</h4>
<p class="dtH4">
<asp:Button id="ButtonShowAds" Text="Show Sports Ads" OnClick="ShowAds_OnClick" /></p>
<p class="dtH4">
<asp:Repeater id="repeaterShowAds" >
<HeaderTemplate>
<table border="1">
<tr>
<td><b>Sports Ads</b></td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<%# Container.DataItem %>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</TABLE>
</FooterTemplate>
</asp:Repeater></p>
</form>
</body>
</html>
TargetedAd.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Specialized;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.CommerceServer.Runtime;
using Microsoft.CommerceServer.Runtime.Profiles;
using Microsoft.CommerceServer.Runtime.Caching;
using Microsoft.CommerceServer.Runtime.Targeting;
using Microsoft.CommerceServer.Runtime.Pipelines;
using Microsoft.CommerceServer.Runtime.Diagnostics;
public partial class TargetedAd : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public void ShowAds_OnClick(Object sender, EventArgs args)
{
CommerceContext csContext = CommerceContext.Current;
//
// Create a targeting profile. Specify the ad page group that you want here.
//
csContext.TargetingSystem.TargetingContextProfile["PageGroup"].Value = "Boots";
//
// Create a ContentSelector object and set its properties.
//
ContentSelector cso = CommerceContext.Current.TargetingSystem.SelectionContexts["advertising"].GetSelector();
cso.Profiles.Add("targetingContext", csContext.TargetingSystem.TargetingContextProfile);
cso.TraceMode = false; //to view debug information.
cso.ItemsRequested = 1;
//Set the ad size.
//Available tags are stored in the Content Sizes reference table.
cso.Size = "Banner";
//
// Get some content.
//
StringCollection content = cso.GetContent();
//
// Bind the results to a repeater.
//
if (content.Count > 0)
{
repeaterShowAds.DataSource = content;
repeaterShowAds.DataBind();
}
//
// Dump out trace messages.
//
if (cso.TraceMessages != null)
{
DebugMessage("<table>", "");
DebugMessage("Targeting Sample", "Trace Messages");
int index = 0;
foreach (StringCollection messages in cso.TraceMessages)
{
DebugMessage("Targeting Sample", "Content item row index=" + index++);
foreach (string message in messages)
{
DebugMessage("Targeting Sample", message);
}
}
if (index == 0)
{
DebugMessage("Targeting Sample", "It looks like there were no ads on schedule.");
}
}
else
{
DebugMessage("Targeting Sample", "ContentSelection tracing is unavailable.");
}
DebugMessage("Targeting Sample", "Dumping out contents of selectionContext...");
ContentSelectionContext selectionContext = csContext.TargetingSystem.SelectionContexts["advertising"];
foreach (string key in selectionContext)
{
DebugMessage("Targeting Sample", "key=" + key + " value=" + selectionContext[key].ToString());
}
DebugMessage("</table>", "");
}
void DebugMessage(string Category, string Message)
{
//csContext.DebugContext.Trace("Targeting Sample", "Trace Messages");
Response.Write("<tr><td>" + Category + "</td><td>" + Message + " </td></tr>");
}
}