Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jalendport/craft-readtime
Calculate the estimated read time for content.
https://github.com/jalendport/craft-readtime
Last synced: 29 days ago
JSON representation
Calculate the estimated read time for content.
- Host: GitHub
- URL: https://github.com/jalendport/craft-readtime
- Owner: jalendport
- License: mit
- Created: 2018-06-06T13:25:36.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-10-23T14:24:35.000Z (about 1 year ago)
- Last Synced: 2024-08-10T00:05:54.037Z (4 months ago)
- Language: PHP
- Homepage:
- Size: 35.2 KB
- Stars: 10
- Watchers: 3
- Forks: 9
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Read Time plugin for Craft CMS 3
Calculate the estimated read time for content.
## Installation
#### Requirements
This plugin requires Craft CMS 4.0.0, or later.
#### Plugin Store
Log into your control panel and click on 'Plugin Store'. Search for 'Read Time'.
#### Composer
1. Open your terminal and go to your Craft project:
```bash
cd /path/to/project
```2. Then tell Composer to load the plugin:
```bash
composer require jalendport/craft-readtime
```3. In the Control Panel, go to Settings → Plugins and click the “Install” button for Read Time.
## Configuration
The average user read speed is set at 200 words per minute by default, this can be changed in the plugin settings.
## Using the Filter
The `|readTime` filter returns a [TimeModel](#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.
#### Examples
```twig
{{ string|readTime }}Returns: 30 seconds
``````twig
{{ richTextField|readTime }}Returns: 2 minutes, 40 seconds
``````twig
{{ richTextField|readTime(false) }}Returns: 3 minutes
```## Using the Function
The `readTime()` function returns a [TimeModel](#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.
#### Examples
```twig
{{ readTime(entry) }} or {{ readTime(entry.matrixField.all()) }}
``````twig
{{ readTime(entry, false) }} or {{ readTime(entry.matrixField.all(), false) }}
```## TimeModel
Whenever you're dealing with the read time in your template, you're actually working with a TimeModel object.
### Simple Output
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()) }}
```### Properties
#### `human`
The human time duration.
#### `interval(format)`
A `DateInterval` object. You'll need to set the [format](http://php.net/manual/en/dateinterval.format.php) as a parameter:
```twig
{% 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.
## Overriding Plugin Settings
If you create a [config file](https://docs.craftcms.com/v3/configuration.html) 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](https://docs.craftcms.com/v3/configuration.html) 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
200
];
```## Roadmap
Some things to do, and ideas for potential features:
Brought to you by [Luke Youell](https://github.com/lukeyouell)