2015-08-05 3 views
3

Я создаю простой демонстрационный сайт для функции DMS Sitecore. По содержанию Sitecore, я создал эту структуру:Sitecore Personalize не работает

Главная
| Персонализируйте
.. | -HomeView1
.. | -HomeView2

HomeView1, HomeView2 дома и имеют тот же шаблон, который содержит только один 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 не будет возвращать правильный пункт (HomeView2), когда применяется правило персонализировать?

Прошу дать мне совет. Заранее спасибо.

ответ

8

Элемент контекста не изменяется, когда вы настраиваете персонализацию, источник данных sublayout. Поэтому вы должны установить 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 context item
  • Eсть не требуется, чтобы ваш элемент страницы (Home) был , тот же шаблон имеет элементы данных.
  • Я не думаю, что персонализация работает в режиме предварительного просмотра, но вы можете проверить его в режиме редактирования.
+0

Этот вопрос занимает много времени. Большое спасибо Дэвис. Он решен. –

Смежные вопросы