Blog authors
Define an author once, credit one or more people on a post and give every writer a page of their own.
Author profiles turn a date and title into a publication with recognizable people behind it. DevLab places authors in a single byline row — avatar, linked name, publication date and reading time stay on one line in the Blog list and the article header. Every author key also receives a dedicated page listing their posts, so credit leads somewhere instead of ending at a name.
Development preview
Blog author profiles are available since v0.8.0.
Add your first author
-
Enable the
authorstaxonomy and create the shared profile.In
zola.toml, register the taxonomy next totags:taxonomies = [ { name = "tags", paginate_by = 5 }, { name = "authors", feed = true }, ]Then create
data/authors.tomlwith one table per writer:[alex] name = "Alex Morgan" role = "Project maintainer" avatar = "/images/people/alex.webp" links = [ { name = "Codeberg", path = "https://codeberg.org/alex", icon = "codeberg" }, ]alexis the stable author key. The same string names the taxonomy term and profile table. Zola determines the URL using the site's taxonomy slug rules:alexbecomes/authors/alex/, whileAlex Morganbecomes/authors/alex-morgan/. Quote a TOML profile table name if it contains spaces. -
Credit that key in a Blog post.
+++ title = "Acme 1.0" description = "What changed in our first stable release." date = 2026-09-08 [taxonomies] tags = ["release"] authors = ["alex"] +++If the post already has a
[taxonomies]table fortags, addauthorsinside that table. TOML does not allow the same table twice. -
Check all three presentations.
zola buildOpen the Blog list and the article to confirm the byline row, then
/authors/alex/for the profile header and the post archive. Whenfeed = trueis set, Zola publishes the configuredfeed_filenameswith only that writer's posts. The profile links to the first configured feed (atom.xmlby default;rss.xmlis also supported).
Where the byline and the author page lead
The Blog list and the article header share one byline design: a circular avatar (initials when no image is set), the author's name as a link, then the publication date and reading time. Nothing is boxed or carded; the row reads as metadata, not decoration.
The name links to the author page by default. The page combines the profile header — avatar, role and icon links — with a complete post archive for that writer. A profile path overrides the destination when a writer's identity lives elsewhere, such as a community page or an external profile.
DevLab also emits an author metadata entry and an author link in the document head for each credited person.
Credit more than one person
List several keys in editorial order:
[taxonomies]
authors = ["alex", "mira"]
The first key appears first in the byline. There is no fixed author limit; on narrow screens the row wraps instead of being cut off. Removing authors or setting it to an empty array hides the byline for that post.
An unknown key degrades to a plain linked name instead of stopping the build, so a typo never takes the site down — but it also never publishes a full profile, so check the rendered byline before releasing. zola check does not render every template path, so do not use it as the only release check.
Shape an author profile
Only name is required inside a profile.
| Field | Default | Purpose |
|---|---|---|
name | Required | Visible author name and document metadata. |
role | Empty | Short responsibility shown on the author page. |
avatar | Empty | Local static image path or absolute HTTP(S) image URL. |
path | Author page | Destination linked from the author's name in bylines and metadata. |
links | Empty array | Icon links shown on the author page. |
These fields are escaped plain text; they do not render Markdown or HTML. Keep the role concise.
Each links item needs a non-empty name and path, with an optional icon. DevLab supports the same profile icons as Community cards: github, gitlab, codeberg, matrix, zulip, telegram, discord, rss, email, link and external-link. An unknown icon uses the generic link mark.
Use an avatar or initials
Put a square image in the site's static directory:
avatar = "/images/people/alex.webp"
Local avatar paths include the site's deployment prefix but are not language-prefixed. DevLab reserves the image dimensions and crops the image to a circle. The image is decorative because the visible name carries the identity. If the file is missing, the browser shows a broken image rather than switching to initials, so verify local assets before publishing.
When avatar is absent, DevLab derives the fallback from the first character of name, including Unicode names.
Control reading time
Zola calculates page.reading_time from each post. DevLab shows it beside the publication date by default, which gives readers useful context without another front-matter field.
Disable it for the complete Blog in zola.toml:
[extra.devlab.blog]
show_reading_time = false
Or override one post inside its existing [extra] table:
[extra]
show_reading_time = false
The estimate remains available to template overrides even when DevLab does not render it.
Connect profiles and destinations
path can lead to a personal site, a repository profile or a local Community page. Local paths and social destinations use the active-language route resolver, while HTTP(S), mailto:, tel:, fragments and query-only links are preserved. Omit path to keep the author page as the destination.
The author profile uses the same basic field names as devlab.people, so a maintainer can be represented consistently in both places. The records are deliberately separate: Blog authors live in data/authors.toml keyed for taxonomy front matter, while Community groups remain arrays that can be arranged under any page heading.
Global profiles are shared by every language. Use language-neutral names and destinations where possible. If roles must be translated, a site can provide language-specific template overrides; the planned language-switcher iteration does not translate authored profile data automatically.
Translate the interface labels
Override the visible reading-time suffix in zola.toml:
[extra.labels]
reading_time = "мин чтения"
author_feed = "Публикации: {author}"
author_feed names the profile feed link for assistive technology and its tooltip; {author} is replaced with the display name. reading_time appears after Zola's numeric estimate. The profile's own name, role and link labels remain authored data.
For the exact configuration contract, see Optional Blog.