eleventy-plugin-blog
v0.2.4
Published
Zero configuration blog featyres for 11ty
Downloads
22
Maintainers
Readme
eleventy-plugin-blog
Zero config blog features for 11ty
This plugin still requires a bit of love in terms of documentation. See my personal blog code to see all examples of use.
Features
- Tags, Categories and API to create new taxonomies (paginated)
- Calendar (paginated)
Installation
npm install --save eleventy-plugin-blog
# OR
yarn add eleventy-plugin-blogUsage
Runnoing examples
Go to the folder with given example and run:
../../generate-examples.js -o . -n 500
npx @11ty/eleventyAll massive output will be created balazzingly fast to show you how it works.
Basic
To start using you just need to add the plugin into your .eleventy.js file.
module.exports = function (eleventyConfig) {
eleventyConfig.addPlugin(require("eleventy-plugin-blog"));
};This will produce following collections:
blogall posts, paginatedblog_flatall posts, flatallall pages (using native 11ty)pagesall pages with frontmatterpage: truetagposts grouped by tags, paginatedcategoryposts grouped by categories, paginatedcategory_listlist of all categoriestag_listlist of all tagscalendarposts grouped by year or year and month, paginated
See example zero config for all templates.
Complex
- See my blog repository: https://github.com/sielay/sielay.com
API
Example template for rendering Page[]
See life example
<ul>
{%- for post in postslist.items -%}
<li>
{%- include 'tile.njk' -%}
</li>
{%- endfor -%}
</ul>paginate(options): IndexPage[]
Create paginated index of pages
Options
Field | Type | Description ------------ | ------------------- | ----------- pages | Iterable | Collection of 11ty pages slug | String | Slug to be applied (see notes below) prefix | String | Slug prefix title | String | Given title meta | Object | Undefiend | Additional data to bound to each index page (see generateCalendar itemsPerPage | Number | Number of 11ty pages on each index page sortBlog | Function | Undefined
Slugs will be generated as follows:
- First page
${slug} - Every next page
${slug}/page-${pageNumber}
IndexPage
Field | Type | Description ------------ | ------------------- | ----------- title | String | Given title slug | String | Generated slug (as described above) pagenumber | Number | Number of given page (starting from 0) url | String | Concatenated value from prefix and slug total | Number | Number of pages slugs | Slugs items | Page[] | 11typ pages on given page ...meta | | Anything that came from meta input
Slugs
Field | Type | Description ------------ | ------------------- | ----------- all | String[] | List of all pages slugs next | String | Null | Slug of the next page previous | String | Null | Slug of the previous page first | String | Null | Slug of the first page last | String | Null | Slug of the last page
Example template
See live example
---
title: Blog
pagination:
data: collections.blog
size: 1
alias: postslist
permalink: /blog/{%- if postslist.pagenumber > 0 -%}{{ postslist.pagenumber }}{%- endif -%}/index.html
topNav: postslist.pagenumber == 0
---
{%- include 'postslist.njk' -%}generatePaginatedBlog(eleventyConfig, Options)
Generates simple paginated blog. Uses paginage over given blog globs and can apply template
Options
Field | Type | Description ----------------- | ------------------- | ----------- blogPostTemplate | String | Undefined | Path to blog post template blog | String[] | Globs for blog posts itemsPerPage | Number | Custom number of items per page
See live example - indirect use
For a template example see paginate.
generateCalendar(eleventyConfig, Options)
Generates calendar grouping by years and months.
Options
Field | Type | Description ----------------- | ------------------- | ----------- blog | String[] | Globs for blog posts itemsPerPage | Number | Custom number of items per page
IndexPage objects generated here will be extended using meta field with
Field | Type | Description ----------------- | ------------------- | ----------- year | String | Year for annual group month | String | Undefined | Month for monthly group type | 'year' | 'month' | Type of group shortTitle | String | Undefined | Formatted title for month groups
Template examples
generateTaxonomy(eleventyConfig, Options)
TBD
generateBooleanCollection(eleventyConfig, Options)
TBD
Filtes
blog_top
TBD
blog_slug
TBD
blog_dateformat
TBD
blog_first
TBD
Kudos
Inspired by Jérôme Coupé
