Lektor Atom Plugin
Project description
Lektor Atom Plugin
Builds one or more Atom XML feeds for your Lektor-based site.
Inspired by the atom-feed-support plugin Armin Ronacher wrote for the Lektor official blog.
Installation
Add lektor-atom to your project from command line:
lektor plugins add lektor-atom
See the Lektor documentation for more instructions on installing plugins.
Configuration
For each feed you want to publish, add a section to configs/atom.ini. For example, a blog with a feed of all recent posts, and a feed of recent posts about coffee:
[blog] name = My Blog source_path = / url_path = /feed.xml items = site.query('/').filter(F.type == 'post') item_model = blog-post [coffee] name = My Blog: Articles About Coffee source_path = / url_path = /category/coffee/feed.xml items = site.query('/blog').filter(F.categories.contains('coffee')) item_model = blog-post
The section names, like blog and coffee, are just used as internal identifiers.
Options
Option |
Default |
Description |
---|---|---|
source_path |
/ |
Where in the content directory to find items’ parent source |
name |
Feed name: default is section name |
|
filename |
feed.xml |
Name of generated Atom feed file |
url_path |
Feed’s URL on your site: default is source’s URL path plus the filename |
|
blog_author_field |
author |
Name of source’s author field |
blog_summary_field |
summary |
Name of source’s summary field |
items |
None |
A query expression: default is the source’s children |
limit |
50 |
How many recent items to include |
item_title_field |
title |
Name of items’ title field |
item_body_field |
body |
Name of items’ content body field |
item_author_field |
author |
Name of items’ author field |
item_date_field |
pub_date |
Name of items’ publication date field |
item_model |
None |
Name of items’ model |
Customizing the plugin for your models
Use the field options to tell lektor-atom how to read your items. For example, if your site’s model is:
[model] name = Blog [fields.writer] type = string [fields.short_description] type = string
Then add to atom.ini:
[main] blog_author_field = writer blog_summary_field = short_description
See tests/demo-project/configs/atom.ini for a complete example.
Filtering items
By default, lektor-atom gets the source at source_path and includes all its children in the feed. If you set item_model, lektor-atom includes only the children with that data model.
Set items to any query expression to override the default. If items_model is also specified, lektor-atom applies it as a filter to items.
Use In Templates
You can link to a specific feed in your template. If your atom.ini contains a feed like this:
[main] source_path = /blog
Link to the feed in a template like this:
{{ 'blog@atom/main'|url }}
Changes
2016-06-02: Version 0.2. Python 3 compatibility (thanks to David Baumgold), colored error output during build, fix for Markdown-formatted item subtitles.
2016-01-09: Version 0.1, initial release.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.