Displaying the Most Popular Entries
Tags: expressionengine, eecms
Published: 2019-03-04 15:19:00

---
title: Displaying the Most Popular Entries
published: true
date: 2019-03-04 15:19:00 UTC
tags: ExpressionEngine,eecms
canonical_url: https://u.expressionengine.com//article/displaying-the-most-popular-entries
cover_image: https://u.expressionengine.com/asset/article-images/popular-entries.jpg
---

ExpressionEngine has channel parameters and variables available that let you count how many times an entry has been viewed.

## The track\_views parameter

You should only enable this on single entry pages such as a news story or product detail page, otherwise it will add to the count and distort your totals.

Here’s a channel entries example tag for our News channel:

```
{exp:channel:entries channel="news" limit="1" track_views="one"}
    <h3>{title}</h3>
    {body}
    <div class="date">Posted on {entry_date format="%M %d, %Y"}</div>
{/exp:channel:entries}

```

The `track_views` parameter will only accept numbers as words, i.e. one, two, three, or four. You can use these four numbered counts for different purposes but I’ve found in practice one is sufficient for most use cases.

## Displaying view counts

When you’ve added the `track_views` parameter you can now start to show view counts in your entries using the `view_count_xxx` variable. The difference here is that you can show them any place the entry is mentioned, not just on single entry pages.

Here’s our channel entries tag for our News listing page:

```
{exp:channel:entries channel="news" limit="10"}
    <h3>{title}</h3>
    <p>This entry has been viewed {view_count_one} times.</p>
    <div class="date">Posted on {entry_date format="%M %d, %Y"}</div>
{/exp:channel:entries}

```

Note here we’re using `{view_count_one}`, this corresponds with the `track_views="one"` parameter we added earlier. If you’re using `track_views="two"` as your parameter then to show the count variable you’d use `{view_count_two}`.

## Creating a top list

Let’s say we want to show our 10 all time most read news stories. We’ll use EE’s `orderby` and `sort` parameters to sort the entries by the view count total, and in descending order (highest number first).

```
<h2>Most read news</h2>
<ul>
    {exp:channel:entries channel="news" limit="10" orderby="view_count_one" sort="desc" dynamic="no"}
    <li>{title}</li>
    {/exp:channel:entries}
</ul>

```

Note here we’ve also added a `dynamic="no"` parameter so the output is constant wherever it’s used.

## Limiting the top list by date

Sometimes you might want to restrict the list to show entries posted, say, in the last seven days. We can do this using the same channel entries tag, but adding the `start_on` parameter to restrict the date range.

This example will display entries from the last rolling seven days:

```
<h2>Most read news</h2>
<ul>
    {exp:channel:entries channel="news" limit="10" orderby="view_count_one" sort="desc" dynamic="no" start_on="-7 days"}
    <li>{title}</li>
    {/exp:channel:entries}
</ul>

```

_Note with this approach if you haven’t post any entries during the last seven days the list will be empty!_

## Refining your list further

ExpressionEngine has several other parameters you can use to control what’s gets displayed in your list, for example:

- `display_by="month" limit="1"` - entries from the current month
- `display_by="week" limit="2` - entries from the last two weeks
- `display_by="day" limit="3` - entries from the lasts three days
- `start_on="last Monday"` - entries from a start date you specify
- `stop_before="{current_time}"` - entries up until a certain time

The possibilities are endless so experiment with different parameters!

--
Originally published by <a href="https://u.expressionengine.com/author/rob-allen">Rob Allen </a> at <a href="https://u.expressionengine.com/article/email-form-setting-a-predefined-subject">u.expressionengine.com</a>