2012-04-26 46 views
0

我正在開發一個使用Sitecore的網站6.5獲取頁數

其中一個要求是在右上角顯示5個最熱門的頁面。

爲此,我想使用Analytic報表用於頁數的功能。

我想知道是否有可能通過使用分析API Sitecore.Analytics

如果是這樣的話,我可以有一些代碼片段來做到這一點,因爲我完全失去了。

回答

1

這裏是你如何在DMS做到這一點:

private const string CommandText = "\r\nSELECT \r\ncount(distinct {0}VisitId{1})\r\n FROM {0}Pages{1}\r\n WHERE {0}ItemId{1} = {2}YourItemId{3}"; 

public static int GetPageViews(ID pageId) 
{ 
    return DataAdapterManager.Provider.Sql.ReadOne<int>(CommandText, ReadPageViews, new object[] { "YourItemId", pageId.ToString() }); 
} 

private static int ReadPageViews(DataProviderReader reader) 
{ 
    return DataAdapterManager.Provider.Sql.GetInt(0, reader); 
} 
+0

感謝您的代碼..它可以獲取當前頁面數量。我可以有一個參考,因爲我需要將該代碼更改爲獲取所有項目的數量越來越低。 – william 2012-04-27 06:00:55

0

你可以看看博客文章「Sitecore OMS data querying – Most viewed pages」被寫入到獲得OMS的最常瀏覽的網頁( DMS)。這至少可以爲您提供一個起點,但您希望調整代碼以匹配更新後的API。

+1

是的。這是一個很棒的話題,但是在6.5中,我無法在分析數據庫中找到會話表。 – william 2012-04-27 05:59:54

4

我知道這已經回答了,但爲什麼不直接使用PageDataTable查詢?我做了這樣的事情:

public static Dictionary<Item, int> GetVisitsCountForItem(Item item) 
    { 
     Sitecore.Analytics.Data.DataAccess.DataSets.VisitorDataSet.PagesDataTable pagesDataTable = new VisitorDataSet.PagesDataTable(); 
     var pageViews = pagesDataTable.Select(p => p.ItemId == item.ID.Guid); 
     var dic = new Dictionary<Item, int>(); 
     dic.Add(item, pageViews.Count()); 
     return dic; 
    } 
+0

+1用於非SQL API方法 – 2013-07-16 18:01:07