metalsmith-sectioned-blog-pagination
v0.0.2
Published
Metalsmith plugin that generates paginated blog landing pages from a main blog template
Downloads
12
Maintainers
Readme
Metalsmith Sectioned Blog Pagination
Metalsmith plugin that generates paginated blog landing pages from a main blog template
Metalsmith Sectioned Blog Pagination creates metadata for blog pagination for pages built with a modular page building paradigm.
Installation
NPM:
npm install metalsmith-sectioned-blog-pagination
Yarn:
yarn add metalsmith-sectioned-blog-pagination
Usage
Pass metalsmith-sectioned-blog-pagination
to metalsmith.use
:
The plugin must be used before the Markdown, Permalinks and Layouts plugins.
import blogPages from `metalsmith-sectioned-blog-pagination`;
Metalsmith( __dirname )
.use(collections({
blog: {
pattern: "blog/*.md",
sortBy: "date",
reverse: true,
limit: 50,
},
}))
.use(blogPages({
"pagesPerPage": 12,
"blogDirectory": "blog/",
}))
.use(markdown())
.use(permalinks())
.use(layouts())
.
.
During the build process, the plugin will create a set of blog landing pages with the specified number of blog posts per page, e.g. /blog/
, /blog/2
, /blog/3
... In a Nunjucks template, a pager would be constructed like this:
<ul class="blogs-pagination">
{% for i in range(0, params.numberOfPages) -%}
<li {% if ((i + 1) == params.pageNumber) %}class="active"{% endif %}>
{% if i == 0 %}
<a href="/blog/">1</a>
{% else %}
<a href="/blog/{{ i + 1 }}/">{{ i + 1 }}</a>
{% endif %}
</li>
{%- endfor %}
</ul>
Here is the complete template for such a blog landing page. And here is the implementation.
Debug
To enable debug logs, set the DEBUG
environment variable to metalsmith-sectioned-blog-pagination
:
metalsmith.env('DEBUG', 'metalsmith-sectioned-blog-pagination*')
CLI usage
To use this plugin with the Metalsmith CLI, add metalsmith-sectioned-blog-pagination
to the plugins
key in your metalsmith.json
file:
{
"plugins": [
{
"metalsmith-sectioned-blog-pagination": {
"pagesPerPage": 12,
"blogDirectory": "blog/",
}
}
]
}