Calculate the estimated read time for content.
This plugin requires Craft CMS 4.0.0, or later.
Log into your control panel and click on 'Plugin Store'. Search for 'Read Time'.
cd /path/to/project
composer require jalendport/craft-readtime
The average user read speed is set at 200 words per minute by default, this can be changed in the plugin settings.
The |readTime
filter returns a TimeModel of how long it takes the average user to read the provided content. The value provided can be a string or an array of values.
Seconds are included by default, but can be disabled by using |readTime(false)
- this only affects the human time format.
{{ string|readTime }}
Returns: 30 seconds
{{ richTextField|readTime }}
Returns: 2 minutes, 40 seconds
{{ richTextField|readTime(false) }}
Returns: 3 minutes
The readTime()
function returns a TimeModel for matrix fields or the whole entry based on it's field layout.
Seconds are included by default, but can be disabled by adding a second parameter of false
- this only affects the human time format.
{{ readTime(entry) }} or {{ readTime(entry.matrixField.all()) }}
{{ readTime(entry, false) }} or {{ readTime(entry.matrixField.all(), false) }}
Whenever you're dealing with the read time in your template, you're actually working with a TimeModel object.
Outputting a TimeModel object without attaching a property or method will return the time in the form of a human time duration.
{{ string|readTime }}
{{ readTime(entry) }}
{{ readTime(entry.matrixField.all()) }}
human
The human time duration.
interval(format)
A DateInterval
object. You'll need to set the format as a parameter:
{% set time = readTime(entry) %}
{{ time.interval('%h hours, %i minutes, %s seconds') }}
seconds
The total number of seconds.
minutes
The total number of minutes.
hours
The total number of hours.
If you create a config file in your config
folder called read-time.php
, you can override the plugin’s settings in the Control Panel. Since that config file is fully multi-environment aware, this is a handy way to have different settings across multiple environments.
Here’s what that config file might look like along with a list of all of the possible values you can override.
<?php
return [
'wordsPerMinute' => 200
];
Some things to do, and ideas for potential features:
Brought to you by Luke Youell