Popular Icon

Popular

Documentation

Installation

You can install the addon using composer:

composer require arthurperton/popular

To publish the config (optional) use:

php artisan vendor:publish --tag=popular-config

Setup

Basic setup requires one step: add the Popular Script Tag just before your </body> tag.

{{ popular_script }}
</body>

Popular will start tracking pageviews now. The total counts will be updated every minute.

Templating

There are two ways of display pageview counts on the frontend. You can use the computed field on your entries or try the dedicated tag.

Using the Computed Field

All entries have a computed field called pageviews containing the current pageview count for that entry.

<ol>
{{ collection:blog limit="5" sort="pageviews:desc" }}
<li>
<a href="{{ url }}">
{{ title }} ({{ pageviews }})
</a>
</li>
{{ /collection:blog }}
</ol>

Using the Tag

Alternatively you can use the {{ pageview_count }} tag anywhere in your template. It will get the entry id from the context:

{{ pageview_count }}

Or you can provide it using a parameter:

{{ pageview_count id="home" }}

Using a variable:

{{ pageview_count :id="some_variable" }}

Shorten Modifier

Sometimes you want to display large numbers in a shortened format. So for example 25,314 becomes 25K. The shorten modifier does that for you.

{{ pageviews | shorten }}

Some examples:

dozen: 12
lots: 25314
omg: 9245021
{{ dozen | shorten }}
{{ lots | shorten }}
{{ omg | shorten }}
12
25K
9.2M

Static Caching

Popular was designed with static caching in mind. By simply using the {{ nocache }} tag you can combine fast page loads with current pageview counts.

Pageview Count Tag

Just wrap your {{ pageview_count }} tag in a {{ nocache }} tag:

{{ nocache }} {{ pageview_count }} {{ /nocache }}

Collection Tag

No need to wrap the entire collection tag pair. Instead just use the {{ pageview_count }} tag inside the loop and wrap that in a {{ nocache }} tag:

<ol>
{{ collection:blog limit="5" sort="pageviews:desc" }}
<li>
<a href="{{ url }}">
{{ title }} ({{ nocache }} {{ pageview_count }} {{ /nocache }})
</a>
</li>
{{ /collection:blog }}
</ol>

Control Panel

A Pageviews field will be shown in your blueprints automatically.

Dashboard Widget

You can add the Popular widget to your dashboard, which is (almost) a drop-in replacement for the Collection widget:

// config/statamic/cp.php
 
'widgets' => [
'getting_started',
[
'type' => 'popular',
'collection' => 'blog',
'limit' => 5,
],
],

Permissions

Two permissions are added:

  • view pageviews
  • edit pageviews

Configuration

You can disable to pageview tracker if you want, for example in your local environment. Just put this in your .env file:

POPULAR_TRACKER_ENABLED=false

You can also opt-out of automatically adding the Pageviews field:

POPULAR_ADD_FIELD=false

All collections are tracked by default. To include or exclude certain collections, update the config file at config/popular.php:

return [
'include_collections' => ['*'],
'exclude_collections' => [],
];

Commands

If you want to reset all your pageview counts to zero in one go, you can use the php please popular:reset command in your CLI. Use it with care.

Git

You probably want your collected pageviews under version control. By default this file is at storage\popular\pageviews which is included normally.

Testing

You can try out Popular locally. A scheduled task runs every minute to update the total pageview counts, so make sure the scheduler is running. You can run it locally using php artisan schedule:work.

Popular does its best to count a pageview just once per user session. So during testing, be aware that slamming that refresh button won't increase your pageview counts :)

Enjoy the addon!