Mkdocs plugin that generates a blog index page sorted by creation date.
Project description
mkdocs-blogging-plugin
A mkdocs plugin that generates a blog page listing selected pages by time.
Installation
pip3 install mkdocs-blogging-plugin
Prerequisites
-
Only
material
theme is adapted by far. -
navigation.instant
feature cannot be enabled if blog paging is on.
Usage
Add blogging
in plugins
and specify the directories to be included:
plugins:
- blogging:
dirs: # The directories to be included
- blog
In the page you want to insert the blog content, just add a line {{ blog_content }}
into your desired position:
# Blogs
{{ blog_content }}
In articles, add meta tags providing article title and description, which will appear on the post list:
---
title: Lorem ipsum dolor sit amet
description: Nullam urna elit, malesuada eget finibus ut, ac tortor.
---
To exclude certain pages from the blog collection, add a meta tag exculde_from_blog
in the meta section of the markdown file:
---
exculde_from_blog: true
---
And it's done! You can open the page where you insert {{ blog_content }}
and see how it is working.
Customization
Options
Optionally, you can customize some behaviours of the plugin:
size: 5 # Number of articles in one page, default: 10
locale: en # The locale for time localizations, default: system's locale
sort:
from: new # Sort from new to old, default
# or old # Sort from old to new
by: creation # Sort by the first commit time, default
# or revision # Sort by the latest commit time
paging: false # Disable paging
show_total: false # Remove 'total pages' label
template: blog-override.html # Path to customized template, see below
Overriding Template
The template
entry in the configuration provides you a way to override the blog content to be rendered.
To customize the blog content, create an HTML template with name other than blog.html
, then provide
the path relative to the parent directory of mkdocs.yml
to the plugin's configuration.
For example:
. ├─ overrides/ │ └─ template.html └─ mkdocs.ymlthen the configuration should be
template: overrides/template.html
.
Partial Customization
You can override how the plugin render a single blog through this method.
In your template, define a macro that renders a single blog with the provided parameters title
, description
and time
.
Then add a line {% extends "blog.html" %}
below the macro.
Please note that {{ caller() }}
must be present somewhere inside the macro.
{% macro render_blog(title, description, time) -%}
<h3>{{ title }}</h3>
<div>{{ description }}</div>
<div>{{ time }}</div>
<hr/>
{{ caller() }}
{%- endmacro %}
{% extends "blog.html" %}
The plugin now use your macro render_blog
to generate the HTML.
Further more, if you want to customize the css, extend the block style
below {% extends "blog.html" %}
. Call {{ super() }}
at
the top if you want to preserve the original style.
{% block style %}
{{ super() }}
{# your style goes here #}
{% endblock %}
Check the original template for available customization points. Here are some common ones:
.md-typeset .blog-post-title
: post title.md-typeset .blog-post-description
: post description.md-typeset .blog-post-extra
: extra section for creation / revision time
For more about HTML templates, refer to jinja2's documentation.
Global Override
Alternatively, you can provide a template that works completely independent from the original template.
These variables are available inside your template:
pages
: sorted blog pages, see mkdocs's documentation for available attributespage_size
: page count in each pageis_revision
:True
if sorted by revision time,False
if by creation timeshow_total
: whether to show the total number of the blog
You can refer to the original template for help.
Publishing on Github Pages
A few more steps needs to be taken for hosting on Github Pages:
-
Set
fetch-depth
to0
when checking out withactions/checkout
:- uses: actions/checkout@v2 with: fetch-depth: 0
Creation and revision time for articles rely on git log, so a complete respository is required.
-
Configure your locale in the plugin's configuration:
locale: zh-CN
Otherwise, the plugin will use locale of the server, which is
en
by default.
Credits
Inspired by mkdocs-git-revision-date-localized-plugin and mkdocs-material-blog.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for mkdocs-blogging-plugin-0.2.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 147605ac9bdd0d1bd641a10e1b5f4dd42bcccd98fa9c87bc3f2e747fba04e848 |
|
MD5 | 06a33a1d295516340ee5ede3ee70a3c9 |
|
BLAKE2b-256 | 0357533274e4134cd2f54ec55d1508344e6f46d0fa8871a2636c137d88ac1ae1 |
Hashes for mkdocs_blogging_plugin-0.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4a2bd9a166250a14c4c86824e1ef86dd9de8f2cbe22c31e6a20b71a7abdd3397 |
|
MD5 | 9960c6a13ca583cc56801004f427f272 |
|
BLAKE2b-256 | b3e9d915158e29287d6b9687619bead74efd3e0ede2531704444a659cdaf6ae4 |