Documentation
- Installation
- Setup
- Templating
- Static Caching
- Control Panel
- Dashboard Widget
- Permissions
- Configuration
- Commands
- Git
- Testing
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: 12lots: 25314omg: 9245021
{{ dozen | shorten }}{{ lots | shorten }}{{ omg | shorten }}
1225K9.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!