---
title: "Blog Plugin"
description: "Blog management, with archive, tags and an RSS feed."
type: "docs"
category: "doc"
tags: []
authors: [Anonymous]
date: "2026-08-21"
last_update: "2026-08-21"
time_minutes: 2
draft: false
unlisted: false
url: "https://www.derafu.dev/docs/ui/content/blog"
---

# Blog plugin

Manages blog posts: listing, tag pages (`/blog/tags/{tag}`), a date archive (`/blog/archive/{archive}`) and an RSS feed (`/blog/rss.xml`).

## Configuration (`services.yaml`)

Enabled under `derafu.content.config.plugins.blog`:

```yaml
parameters:
    derafu.content.config:
        plugins:
            blog:
              path: 'resources/content/blog'
              blogTitle: 'Blog'
              postsPerPage: 10
```

| Option | Type | Default | Description |
|---|---|---|---|
| `path` | string | `resources/content/blog` | Directory scanned for posts, relative to the website root. |
| `blogTitle` | string | `Blog` | Title used for the blog's own SEO metadata. |
| `blogDescription` | string | `Thoughts, stories, and the latest from our world.` | Description used for the blog's own SEO metadata. |
| `blogSidebarCount` | int | `5` | Number of recent posts shown in the sidebar. |
| `blogSidebarTitle` | string | `Recent posts` | Title of the recent-posts sidebar. |
| `include` | array of glob patterns | `['**.{markdown,md}']` | Files considered content, relative to `path`. |
| `exclude` | array of glob patterns | `[]` | Files excluded even if matched by `include`. |
| `postsPerPage` | int | `10` | Posts per page in the listing. |
| `showReadingTime` | bool | `true` | Whether to show the estimated reading time. |
| `feedOptions` | array | see below | RSS feed configuration (`/blog/rss.xml`). |
| `showLastUpdateAuthor` | bool | `true` | Whether to show who last updated the post. |
| `showLastUpdateTime` | bool | `true` | Whether to show when the post was last updated. |
| `tags` | array of strings, or string | `[]` | Predefined tags for the blog. |
| `onInlineTags` | `ignore`\|`log`\|`warn`\|`throw` | `warn` | What to do when a post uses a tag that isn't in the predefined `tags` list. |

### `feedOptions`

| Option | Type | Default | Description |
|---|---|---|---|
| `limit` | int | `20` | Number of posts included in the feed. |
| `title` | string | `blogTitle` | Overrides the feed title. |
| `description` | string | `blogDescription` | Overrides the feed description. |
| `copyright` | string | none | Copyright line of the feed. |
| `language` | string | none | Feed language. |
| `sortPosts` | `descending`\|`ascending` | `descending` | Sort order of the posts in the feed. |

## Content frontmatter

Blog posts use the [generic content frontmatter](./frontmatter), with one override:

| Field | Type | Default | Description |
|---|---|---|---|
| `hide_table_of_contents` | bool | `true` | Overrides the generic default of `false` — blog posts hide the table of contents unless explicitly re-enabled. |



---
Last updated on 21/08/2026

