Lektor Index Pages Plugin
This Lektor plugin can be used to generate “index pages” for a
blog or similar collection of pages. These index pages list the blog posts
segregated by some key, with each index page containing only those posts
which match that key.
Examples of what this can be used for include:
-
Category Indexes: A set of index pages, one for each category,
which lists all the posts in that category. (Multi-valued index keys
are also supported, so that each post can appear on more than a single
index page: e.g. keyword indexes.)
-
Date Indexes: A set of index pages, one for each year (say), which
list all the posts in that year. (Sub-indexes are supported
subindexes — e.g., each year index may have as children a sequence
of month indexes.)
Behind the scenes, judicious caching of indexing results, and careful
control of Lektor’s dependency tracking prevent all this from slowing
the build process down too excruciatingly much.
Project Links
Author
Jeff Dairiki dairiki@dairiki.org
Changelog
Release 1.1.0 (2023-06-16)
- Drop support for Lektor 3.2.x
- Test under python 3.11
- Add type annotations
- Convert packaging from setuptools to PDM
- Disuse
pkg_resources
in favor of importlib.metadata
- Add pre-commit configuration
- Run black and reorder-python-imports on code
Release 1.0 (2022-01-28)
- Drop support for python 2.7 and 3.6.
- Fix deprecation warning from
jinja2
. Jinja2 version 3 is now required.
Documentation
-
Documentation clarifications, updates and fixes.
(PR #2 — Thank you Bart Van Loon!)
-
Add missing requirement recommonmark
to docs/requirements.txt
.
-
Add docs
enviroment to tox.ini
to test that docs will build cleanly.
Testing
- Test under python 3.10 and lektor<3.3
Release 0.1 (2021-02-05)
No code changes.
Update development status classifier to "stable".
Release 0.1a3 (2020-05-08)
API changes
-
Added a key
field on the index virtual source object. It is an
alias to _id
, but is syntactically more self-explanatory.
-
The keys
configuration key has been renamed to key
.
-
When the key
expression is being evaluted, the record whose key(s)
is(are) to be be computed is now available in the jinja context as
item
rather than this
.
Documentation
- Documentation moved from README to Sphinx docs at RTFD.io
Release 0.1a2 (2020-05-06)
API changes
-
The record
argument has been dropped from the (jinja) global
index_pages
function. (Since indexes can not have multiple
parents, it is not necessary.)
-
The parent
configuration key has been renamed to parent_path
.
-
The slug
configuration key has been renamed to slug_format
.
-
The attributes
config section has been renamed to fields
.
Though they are not quite like regular Lektor Record fields, they
are more field-like than attribute-like. (I.e. access is via
getitem rather than getattr.)
Release 0.1a1 (2020-05-05)
Initial release.