gpt4 book ai didi

Sitecore Personalize 无法正常工作

转载 作者:行者123 更新时间:2023-12-04 05:13:40 27 4
gpt4 key购买 nike

我为 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;
}
}

这是我在主页上绑定(bind)的内容

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="HomePage.ascx.cs" Inherits="DMSDemo.sublayouts.HomePage" %>
<div><%= currentItem["Display Text"].ToString() %></div>

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

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

最佳答案

当您个性化时,上下文项不会改变,子布局的数据源会。所以你应该将 currentItem 设置为数据源。

这里有一些常用代码来获取我从 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);
}
}

其他几点:

  • 一般来说,avoid the use of the contextitem 是一种很好的做法。
  • 您的页面项目(主页)不需要是相同的模板具有数据源项。
  • 我不认为个性化在预览模式下工作,但您可以在编辑模式下查看。

关于Sitecore Personalize 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31823333/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com