November Happy Hour will be moved to Thursday December 5th.

NumViews property returns 0?

Vote:
 

Hi,

I'm creating a topics list for a forum where I want to show how many times each topic has been read/viewed. I'm using the Topic.NumViews property to do this, but for some reason it returns 0 views for all topics, why?

Best regards,
Helena

 

#27514
Feb 02, 2009 9:46
Vote:
 

Hi Helena,

This property is not incremented automatically by the framework, since each solution may have its own definition of when the view count should be increased.

This means that you have to increment it yourself by calling this method of the forum handler:

ForumHandler.IncrementViews(currentTopic); 

I would like to point out that if you are using the latest version of EPiServer Community (3.2) then you should use the VisitHandler instead since the NumViews will be obsolete in the future.

Best regards,
Tom

#27516
Feb 02, 2009 10:26
Vote:
 

Thanks Tom!

I tried the VisitHandler to add visits (with Topic.GetNumVisits() to get the value) and now it works as expected. However, users should be able to re-sort the topic list by the number of views. For other sort options I've used TopicSortOrder with various TopicSortField values, but when I try TopicSortField.Views it doesn't seem to work (I guess my NumViews values are still 0 because I don't use the IncrementViews method?)

Is there a way of sorting the topics by number of visits?

Best regards,
Helena

#27528
Feb 02, 2009 11:48
Vote:
 

Hi again,

If you are using the "Visit-system" - which is the way to go - you should not use the NumViews, since it's obsolete.

Presuming you have used VisitHandler to add the visit to the topic:

VisitHandler.AddVisit(new Visit(currentTopic, new UserAuthor(currentUser))); 

Then you can use the VisitHandler to get the visited items and sort them the way you want:

int page = 1;
int pageSize = 10;
int totalItems;

VisitableEntitySortOrder order =
new VisitableEntitySortOrder(VisitableEntitySortField.NumVisits, SortingDirection.Descending);

VisitableEntityCollection visitedItems =
VisitHandler.GetVisitedItems(typeof (EPiServer.Community.Forum.Topic), page,
pageSize, TimeSpan.FromMinutes(10), out totalItems, order);

I hope this helps!

Best regards,
Tom

#27534
Edited, Feb 02, 2009 13:14
This thread is locked and should be used for reference only. Please use the Legacy add-ons forum to open new discussions.
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.