# Grav ReadingTime Plugin **ReadingTime** is a [Grav](http://github.com/getgrav/grav) plugin which allows Grav to display the reading time of a page's content. This is especially useful for blogs and other sites as it gives the reader a quick idea of how much time they will need to set aside to read the page in full. Enabling the plugin is very simple. Just install the plugin folder to `/user/plugins/` in your Grav install. By default, the plugin is enabled. # Installation To install this plugin, just download the zip version of this repository and unzip it under `/your/site/grav/user/plugins`. Then, rename the resulting folder to `readingtime`. >> It is important that the folder be named `readingtime` as this is the folder referenced in the plugin's code. The contents of the zipped folder should now be located in the `/your/site/grav/user/plugins/readingtime` directory. >> NOTE: This plugin is a modular component for Grav which requires [Grav](http://github.com/getgrav/grav), the [Error](https://github.com/getgrav/grav-plugin-error) and [Problems](https://github.com/getgrav/grav-plugin-problems) plugins, and a theme to be installed in order to operate. # Usage ### Initial Setup Place the following line of code in the theme file you wish to add the ReadingTime plugin for: ``` {{ page.content|readingtime }} ``` You need to pass a Twig Filter 'readingtime' to display the reading time values. You can translate the labels with this example: ``` {{ page.content|readingtime({'minutes_label': 'Minuti', 'minute_label': 'Minuto', 'seconds_label': 'Secondi', 'second_label': 'Secondo'}) }} ``` I used Italian translation for the labels, you can change with your language. If you need you can change the format with this avariable variables (the code is default format): ``` {{ page.content|readingtime({'format': '{minutes_short_count} {minutes_text}, {seconds_short_count} {seconds_text}'}) }} ``` Available variables: | Variable | Description | Example | | :---------------- | :---------------------- | :--------------------------------------------------------------------------- | | `{minute_label}` | Minute Label (Singular) | `minute` | | `{minutes_label}` | Minutes Label (Plural) | `minutes` | | `{second_label}` | Second Label (Singular) | `second` | | `{seconds_label}` | Second Label (Plural) | `seconds` | | `{format}` | Display Format | `{minutes_text} {minutes_short_count}, {seconds_text} {seconds_short_count}` | Not available to edit but used in the format variable: | Variable | Description | Example | | :---------------------- | :--------------------------------------- | :------ | | `{minutes_short_count}` | Displays Minutes with Abbreviated Digits | `2` | | `{seconds_short_count}` | Displays Seconds with Abbreviated Digits | `9` | | `{minutes_long_count}` | Displays Minutes in Double Digits | `02` | | `{seconds_long_count}` | Displays Seconds in Double Digits | `09` | Display variables for text labels: | Variable | Description | Example | | :--------------- | :------------------------------------------------------------------------------- | :-------- | | `{minutes_text}` | Displays the Minutes Text Label (Singular or Plural, Based on Number of Minutes) | `minute` | | `{seconds_text}` | Displays the Seconds Text Label (Singular or Plural, Based on Number of Seconds) | `seconds` | >> NOTE: Any time you are making alterations to a theme's files, you will want to duplicate the theme folder in the `user/themes/` directory, rename it, and set the new name as your active theme. This will ensure that you don't lose your customizations in the event that a theme is updated. Once you have tested the change thoroughly, you can delete or back up that folder elsewhere. ### Include image views The number of seconds to view images is added to the reading time of text when `include_image_views` is set to true. Images are identified by `` tags in `page.content()`. The default values for `seconds_per_image` (shown below) mean that the first image adds `12` seconds to the reading time, the second adds `11` seconds, the third adds `10` seconds, and so on. Only integers, whitespace, and commas are permitted in the string. ``` seconds_per_image: '12,11,10,9,8,7,6,5,4,3' ``` If there are more images in a page than what is defined in `seconds_per_image` (e.g., more than 10 images in the default shown above) then subsequent images take the last value (`3` seconds in the default shown above). The example below adds `5` seconds reading time for all images. ``` seconds_per_image: 5 ```