2016-03-06 66 views
2

我想顯示一些不同的sublayout,如果用戶訪問了一些頁面超過2次,所以我想使用這個規則「訪問號碼與數字比較」,但我不知道如何使用它?我試圖添加此規則並將「數字」替換爲2,但它不起作用。SItecore的個性化

+0

您使用的Sitecore 8的修訂版本是什麼? 「我不知道如何使用它」是什麼意思?您是否已經在子佈局中設置了規則並將其發佈? –

+1

這裏有一篇關於建立個性化的好文章 - http://www.nonlinearcreations.com/Digital/how-we-think/articles/2014/06/Sitecore-DMS-personalization-howto.aspx –

+1

' 。比較......規則意味着它是用戶在該網站上的第n次訪問,而不是該用戶多次打開其中一個頁面。 –

回答

2

正如馬雷克所說,這是不可能的,因爲你正在使用的條件。但是,您可以通過查看頁面的VisitPageIndex來調整Rule條件以實現此目的。

public class ContactVisitPageIndexCondition<T> : OperatorCondition<T> where T : RuleContext 
{ 
    public int No 
    { 
     get; 
     set; 
    } 

    public ID PageGUID 
    { 
     get; 
     set; 
    } 

    public ContactVisitPageIndexCondition() 
    { 
    } 

    protected override bool Execute(T ruleContext) 
    { 
     Assert.ArgumentNotNull(ruleContext, "ruleContext"); 
     Assert.IsNotNull(Tracker.Current, "Tracker.Current is not initialized"); 
     Assert.IsNotNull(Tracker.Current.Session, "Tracker.Current.Session is not initialized"); 
     Assert.IsNotNull(Tracker.Current.Session.Interaction, "Tracker.Current.Session.Interaction is not initialized"); 
     int contactVisitPageIndex = Tracker.Current.Session.Interaction.Pages.SingleOrDefault(p => p.Item.Id == PageGUID).VisitPageIndex; 
     switch (base.GetOperator()) 
     { 
      case ConditionOperator.Equal: 
      { 
       return contactVisitPageIndex == this.No; 
      } 
      case ConditionOperator.GreaterThanOrEqual: 
      { 
       return contactVisitPageIndex >= this.No; 
      } 
      case ConditionOperator.GreaterThan: 
      { 
       return contactVisitPageIndex > this.No; 
      } 
      case ConditionOperator.LessThanOrEqual: 
      { 
       return contactVisitPageIndex <= this.No; 
      } 
      case ConditionOperator.LessThan: 
      { 
       return contactVisitPageIndex < this.No; 
      } 
      case ConditionOperator.NotEqual: 
      { 
       return contactVisitPageIndex != this.No; 
      } 
     } 
     return false; 
    } 
} 
+0

'VisitPageIndex'是一個痛苦的事情,只有返回聯繫人的訪問中查看的頁面的索引,但這是一個很好的答案 - 只需替換'Tracker.Current.Session.Interaction.Pages.SingleOrDefault(p => p.Item。 Id == PageGUID).VisitPageIndex;'用'Tracker.Current.Session.Interaction.Pages.Count(p => p.Item.Id.Equals(yourPageId))' –

2

由於馬雷克Musielak說,Where the visit no. compares to ..有關訪問該網站,而不是一個人的頁面。

我有Sitecore的API中一看,其Tracker命名空間,我可以找到具體的網頁瀏覽次數最接近的屬性是VisitPageIndex但反編譯的代碼,並檢查MongoDB表明,僅僅是頁面的索引被視爲對於訪問該網站,所以這不會爲你工作。

展望MongoDB沒有屬性來存儲頁面訪問量,但它確實存儲了觀看InteractionsPages所以你可以寫一個自定義規則計數的次數是頁面的頁面數組中

例如

int pageViewed = Tracker.Current.Session.Interaction.Pages.Count(p => p.Item.Id.Equals(yourPageId)) 

,如果你不想編寫自定義的另一種方法是用怎樣Sitecore的個性化掃描工作有點直列改變你的方法開箱。

您會想在Marketing Centre例如Marketing Centre中使用或創建profile keys。 「品牌知名度」。將新的profile key分配給相關頁面,併爲其指定一個分數。 10.這意味着每次用戶訪問該頁面時,他們都會獲得「品牌知名度」中的10分。

現在爲個性化位。在現有的sublayout上創建新的個性化規則,如果分數爲greater than or equal to,則使用'其中特定配置文件鍵的值與特定值進行比較'將其設置爲隱藏。20.如果值爲greater than or equal to 20.創建另一個以顯示新的sublayout 20.

我寫了一篇關於這個的博客,如果you need more info