SharePoint Pals
 | Sign In
Step by steps on how to display Most Visited Sites with number of view count in SharePoint 2013 Web Analytics
by Senthil Kumaresan 31 Mar 2014
Author
SharePoint Architect
Visits   
Today  :   8     Total  :    36565

It’s a backward step from Microsoft in terms of Web Analytics in SharePoint 2013 by removing the out of the box SharePoint Usage and Search Analytics reports that was provided with a more intuitive GUI in SharePoint 2010. This article shows you how to display most visited sites with view count in easy steps in SharePoint 2013

As you might have known by now that web Analytics is no more a Service Application and it is part of Search Service Application in SharePoint 2013.

Now there are few excel reports named as “Popularity reports” available in each list\library\Site and Site Collection in SharePoint 2013. It shows day/Month wise hit count of each document and list items in SharePoint 2013.But these reports in reality is not more effective and don’t present data needed to identify the effective usage of the SharePoint System. Also the SharePoint 2013 lacks the Web Analytics Web part that was available in SharePoint 2010.

You can now use the Content Search Web Part that is used to generate the Usage and Search Analytics. Content Search Web Part ships along with the Enterprise Edition of SharePoint 2013. When you activate the SharePoint Enterprise Site Features of a site collection you get the Content Search web Part available under the Content Rollup group in the Add Web Part section.

I will take a a examples of a report Most Visited Sites in SharePoint 2013 and explain how you can achieve using the Content Search Web Part which can be generated for a Site Collection, Web Application.

Note: You cannot generate any User Specific reports like “Top Visitors” or “Top Contributors” using the analytics component in SharePoint 2013 as it does not store any user specific data.

I will take a simple example of how to show “Most Visited Sites” in your Site Collection.

Most Visited Sites(With Content Search Web Part):

Make sure you have activated the “Cross Site Collection Publishing” feature activated in Site Collection Features for Content Roll Up section to appear in the Add Web Parts the To add a Content Search Web Part to your page.

Configure the content search web part using the below parameters

Edit the Content Search Web Part and Provide the below values for the properties of the Web part

1. Select “Change Query” Button. In the Basics Tab for Query window, Select the “Switch to Advanced Mode”.

Basics Tab

Value

Query

Local SharePoint Results

QueryText

Use the below query text for Most Visited Sites:


(contentclass:STS_Web AND Path:www.contoso.com/sites/contoso*)


 


Use the below query for Most Visited Documents


(IsDocument:"True" AND path:http://www.contoso.com/sites/contoso*)


Note: The hit count of documents is recorded in Analytics component when the documents are opened using Office Web Apps in a Web Page.


 


Use the below query for Most Visited Pages:


(Path:http://www.contoso.com* AND (FileExtension:aspx or FileExtension:html)) (contentclass:STS_ListItem OR IsDocument:True)



Note: The above query only includes Pages content from libraries in the site and excludes any page that are available in the root folder of the site.

Sorting Tab

Value

Sort By

ViewsRecent Descending (Orders the result set by ViewCount for last 14 days )

(Or)

ViewsLifeTime Descending (Orders the result set by ViewCount from the time the Analytics Component was enabled in the farm)

Click ok to Save the Query.

The above configuration will have the content search web part display the results for the Most Visited Sites, but it does not show you the no. of View Counts.

How do you display the total no. of Views for each Site ?

You can modify the Display Templates for Content Search Web Part to show the View Count. The total no. of Views will be stored in the Managed Properties ViewsRecent or ViewsLifeTime.

You can add managed properties to your item level display template and show the value of the managed property in the display templates which will show you the count in web part.

Note : Download the sample display template with ViewRecent managed property from the bottom of the post

Deploy the Item Template to _catalogs/MasterPages/Display Templates/Content Web Parts folder. A Corresponding JS file will be automatically created in the folder.

The new item level display template can then be used by configuring the web part settings to use it.

You don’t have an Enterprise Edition then how do you generate these reports without Content Search Web Part?

SharePoint 2013 exposes a set of methods via the Microsoft.Office.Server.Analytics Namespace that is used to generate reports programmatically using Server Side Object Model.

There is no programmatic way to query analytics data using Client Side Object Model as it requires RunWithElevatedPrivileges to read data from Analytics Database.

Below I have provided a Code snippet that can be used to generate the Most Visited Sites programmatically. I have used the method GetHitCountForMonth to generate hit count for the last 30 days. You can also query per day by using GetHitCountForDay method.

 Dictionary<string, int> viewCounts = new Dictionary<string, int>();
 SPSecurity.RunWithElevatedPrivileges(delegate
 {
     using (var site = new SPSite("http://www.contoso.com/Sites/Test"))
     {
         using (SPWeb oWebsite = new SPSite("http://www.contoso.com/Sites/Test").OpenWeb())
         {
             SPWebCollection collWebsite = oWebsite.Webs;
 
             foreach (SPWeb subSite in collWebsite)
             {
                 try
                 {
 
                     var context = SPServiceContext.GetContext(site);
                     var searchProxy = context.GetDefaultProxy(typeof(SearchServiceApplicationProxy)) as SearchServiceApplicationProxy;
                     var usageData = searchProxy.GetRollupAnalyticsItemData((int)StandardEventTypeId.View, Guid.Empty, site.ID, subSite.ID);//1 represents "View Count" Event Type
 
 
                     if (usageData.GetHitCountForMonth(DateTime.Now) != null)
                     {
                         viewCounts.Add(subSite.Title, usageData.GetHitCountForMonth(DateTime.Now));
                     }
                     else
                     {
                         viewCounts.Add(subSite.Title, 0);
                     }
                     subSite.Close();
                     return viewCounts;
                 }
                 catch (Exception er)
                 {
                     throw new Exception("An error has occurred. Please contact your farm administrator");
                 }
             }
         }
 
     }
 
 });

You can also use the Microsoft.Office.Server.Search.Analytics.UsageAnalytics Namespace that can be used to generate item level reports such as “Most Visited Documents”. Below I have provided a snippet that can be used to identify view count for each item in a Pages library

 Dictionary<string, int> viewCounts = new Dictionary<string, int>();
 SPSecurity.RunWithElevatedPrivileges(delegate
 {
     using (var site = new SPSite("http://www.contoso.com/sites/test"))
     {
         using (SPWeb oWebsite = new SPSite("http://www.contoso.com/sites/test").OpenWeb())
         {
 
             try
             {
                 var context = SPServiceContext.GetContext(site);
                 var searchProxy = context.GetDefaultProxy(typeof(SearchServiceApplicationProxy)) as SearchServiceApplicationProxy;
                 UsageAnalytics obj = new UsageAnalytics(site);
 
                 SPList list = oWebsite.Lists["Pages"];
                 SPQuery query = new SPQuery();
 
                 foreach (SPListItem item in list.Items)
                 {
                     var usageData = obj.GetAnalyticsItemData((int)StandardEventTypeId.View, item);
                     if (usageData.GetHitCountForMonth(DateTime.Now) != null)
                     {
                         viewCounts.Add(item["Title"].ToString(), usageData.GetHitCountForMonth(DateTime.Now));
                     }
                     else
                     {
                         viewCounts.Add(item["Title"].ToString(), 0);
                     }
                 }
                 return viewCounts;
             }
             catch (Exception er)
             {
                 throw new Exception("An error has occurred. Please contact your farm administrator");
             }
         }
     }
 
 });
Download display template with View Recent Property
blog comments powered by Disqus

SharePoint Pals

Pals
SharePoint Pals, a community portal for SharePoint developers, Administrators and End Users. Let's join hands and share the point together.
Read this on mobile

Training

Angular Js Training In Chennai
Advanced Angular Js training with real world developer scenarios
Angular Js, Web Api and Ionic for .Net Developers
All in one client side application development for .Net developers
Angular Js For SharePoint Developers
Get ready for the future. Its no more just C#

Get Connected

SharePoint Resources

SharePoint 2013 and 2010 Web Parts
Free Web Parts with Source Code for SharePoint Community




SharePoint 2013 Books and Tutorials
Collection of free SharePoint 2013 books and tutorials (eBooks, pdfs)

Supported By

Contribute your article and be eligible for a one month Free Subscription for Plural Sight. The Author of the most popular New Article (published in the previous month) will be awarded with a Free One month Plural Sight Subscription. Article can be sent to articles@sharepointpals.com in a word document.

Related Resources

Recent Tweets

Twitter January 15, 00:25
How To Enable Target Value And Actual Value In #D3 Gauge Chart https://t.co/VxSi4QnNrC

Twitter January 15, 00:24
How To Open #SharePoint List Hyperlink Column In Modal #Popup Window https://t.co/EQ7HkoZDkX

Twitter January 15, 00:24
Quick Introduction To #Asp.NetCore And It’s Features https://t.co/zAXObHCFpH

Twitter January 15, 00:22
How To Configure #PerformancePoint Services To Use Secure Store In #SharePoint 2013 https://t.co/LEwnUoI7EY

Twitter January 15, 00:21
How To Block Or Disable #Office365 Services https://t.co/Yvp2VPFIRP

Follow us @SharePointPals
Note: For Customization and Configuration, CheckOutRecent Tweets Documentation