Sitecore Personalize 不工作
Sitecore Personalize is not working
我为 Sitecore 的 DMS 功能创建了一个简单的演示站点。
在 sitecore 内容中,我创建了这个结构:
首页
|-个性化
..|-HomeView1
..|-HomeView2
HomeView1、HomeView2和Home的模板相同,只包含一个Field: Display Text
现在我为主页创建个性化设置,并为其设置规则。
规则是当前月份是八月,并将个性化内容指向 HomeView1。
当我预览时,内容不会更改为 HomeView1 的文本。
这是我的源代码:
public partial class HomePage : System.Web.UI.UserControl
{
protected Item currentItem;
protected void Page_Load(object sender, EventArgs e)
{
currentItem = Sitecore.Context.Item;
}
}
这是我在首页绑定的
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="HomePage.ascx.cs" Inherits="DMSDemo.sublayouts.HomePage" %>
<div><%= currentItem["Display Text"].ToString() %></div>
我想知道为什么在应用个性化规则时 Sitecore.Context.Item
不会 return 正确的项目 (HomeView2)?
请多多指教。提前致谢。
当您进行个性化设置时,上下文项不会更改,子布局的数据源会更改。所以你应该设置 currentItem
到数据源。
下面是一些常用代码,用于获取我 copy/pasted 来自 Matthew Dresser's blog 的数据源:
var sublayout = this.Parent as Sitecore.Web.UI.WebControls.Sublayout;
if (sublayout != null)
{
Guid dataSourceId;
Sitecore.Data.Items.Item dataSource;
if (Guid.TryParse(sublayout.DataSource, out dataSourceId))
{
dataSource = Sitecore.Context.Database.GetItem(new ID(dataSourceId));
}
else
{
dataSource = Sitecore.Context.Database.GetItem(sublayout.DataSource);
}
}
其他几点:
- 一般来说,避免使用上下文是个好习惯
项目
- 您的页面项目(主页)无需成为
同一模板具有数据源项。
- 我不认为个性化
在预览模式下工作,但您可以在编辑模式下查看它。
我为 Sitecore 的 DMS 功能创建了一个简单的演示站点。 在 sitecore 内容中,我创建了这个结构:
首页
|-个性化
..|-HomeView1
..|-HomeView2
HomeView1、HomeView2和Home的模板相同,只包含一个Field: Display Text
现在我为主页创建个性化设置,并为其设置规则。 规则是当前月份是八月,并将个性化内容指向 HomeView1。 当我预览时,内容不会更改为 HomeView1 的文本。 这是我的源代码:
public partial class HomePage : System.Web.UI.UserControl
{
protected Item currentItem;
protected void Page_Load(object sender, EventArgs e)
{
currentItem = Sitecore.Context.Item;
}
}
这是我在首页绑定的
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="HomePage.ascx.cs" Inherits="DMSDemo.sublayouts.HomePage" %>
<div><%= currentItem["Display Text"].ToString() %></div>
我想知道为什么在应用个性化规则时 Sitecore.Context.Item
不会 return 正确的项目 (HomeView2)?
请多多指教。提前致谢。
当您进行个性化设置时,上下文项不会更改,子布局的数据源会更改。所以你应该设置 currentItem
到数据源。
下面是一些常用代码,用于获取我 copy/pasted 来自 Matthew Dresser's blog 的数据源:
var sublayout = this.Parent as Sitecore.Web.UI.WebControls.Sublayout;
if (sublayout != null)
{
Guid dataSourceId;
Sitecore.Data.Items.Item dataSource;
if (Guid.TryParse(sublayout.DataSource, out dataSourceId))
{
dataSource = Sitecore.Context.Database.GetItem(new ID(dataSourceId));
}
else
{
dataSource = Sitecore.Context.Database.GetItem(sublayout.DataSource);
}
}
其他几点:
- 一般来说,避免使用上下文是个好习惯 项目
- 您的页面项目(主页)无需成为 同一模板具有数据源项。
- 我不认为个性化 在预览模式下工作,但您可以在编辑模式下查看它。