Sitecore个性化设置不起作用

Sitecore个性化设置不起作用,sitecore,sitecore-dms,Sitecore,Sitecore Dms,我为Sitecore的DMS功能创建了一个简单的演示站点。 在sitecore内容中,我创建了以下结构: 主页 |-个性化 ..|-HomeView1 ..|-家庭视图2 HomeView1、HomeView2和Home具有相同的模板,其中仅包含一个字段:显示文本 现在我为主页创建个性化设置,为它设置规则。 规则是当前月份为8月,并将个性化内容指向HomeView1。 预览时,内容不会更改为HomeView1的文本。 以下是我的源代码: 公共部分类主页:System.Web.UI.UserCon

我为Sitecore的DMS功能创建了一个简单的演示站点。 在sitecore内容中,我创建了以下结构:

主页
|-个性化
..|-HomeView1
..|-家庭视图2

HomeView1、HomeView2和Home具有相同的模板,其中仅包含一个
字段:显示文本

现在我为主页创建个性化设置,为它设置规则。 规则是当前月份为8月,并将个性化内容指向HomeView1。 预览时,内容不会更改为HomeView1的文本。 以下是我的源代码:

公共部分类主页:System.Web.UI.UserControl
{
受保护物品;
受保护的无效页面加载(对象发送方、事件参数e)
{
currentItem=Sitecore.Context.Item;
}
}
这就是我在主页上绑定的内容


我想知道为什么应用个性化规则时,
Sitecore.Context.Item
不会返回正确的项目(HomeView2)


请给我一些建议。提前感谢。

当您进行个性化设置时,上下文项不会更改,子布局的数据源会更改。因此,您应该将
currentItem
设置为数据源

以下是获取我从中复制/粘贴的数据源的一些常见代码:

var sublayout=this.Parent作为Sitecore.Web.UI.WebControls.sublayout;
if(子布局!=null)
{
Guid数据源ID;
Sitecore.Data.Items.Item数据源;
if(Guid.TryParse(sublayout.DataSource,out dataSourceId))
{
dataSource=Sitecore.Context.Database.GetItem(新ID(dataSourceId));
}
其他的
{
dataSource=Sitecore.Context.Database.GetItem(sublayout.dataSource);
}
}
其他几点:

  • 一般来说,最好的做法是
  • 您的页面项目(主页)不需要是 同一模板具有数据源项
  • 我不认为个性化 可以在预览模式下工作,但可以在编辑模式下进行检查

这个问题花了我很多时间。非常感谢你,戴维斯。问题解决了。