---
title: "Docs Plugin"
description: "Documentation management, with a sidebar and nested sections."
type: "docs"
category: "doc"
tags: []
authors: [Anonymous]
date: "2026-10-21"
last_update: "2026-10-21"
time_minutes: 3
draft: false
unlisted: false
url: "https://www.derafu.dev/docs/ui/content/docs"
---

# Docs plugin

Manages documentation pages, nested arbitrarily deep — see [Content hierarchy](./introduction#content-hierarchy). Renders as HTML, Markdown or PDF depending on the requested format (`Accept` header, or `.md`/`.pdf` suffix) — see [PDF and Markdown export](./exports) for what the last two add, including bundling a whole section into one file with `?full=1`.

## Configuration (`services.yaml`)

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

```yaml
parameters:
    derafu.content.config:
        plugins:
            docs:
              path: 'resources/content/docs'
              sidebarDepth: 5
```

| Option | Type | Default | Description |
|---|---|---|---|
| `path` | string | `resources/content/docs` | Directory scanned for docs, relative to the website root. |
| `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`. |
| `sidebarPath` | bool | `true` | Whether to show the sidebar, auto-generated from the content hierarchy. There is no support for a custom, manually curated sidebar file — sort/label docs via `sidebar_position`/`sidebar_label` in their frontmatter instead. |
| `sidebarCollapsible` | bool | `true` | Whether sidebar categories can be collapsed. |
| `sidebarCollapsed` | bool | `true` | Whether sidebar categories start collapsed. |
| `sidebarDepth` | int | `5` | Maximum nesting depth shown in the sidebar. |
| `showLastUpdateAuthor` | bool | `true` | Whether to show who last updated the doc. |
| `showLastUpdateTime` | bool | `true` | Whether to show when the doc was last updated. |
| `breadcrumbs` | bool | `true` | Whether to show breadcrumbs above the doc. |
| `tags` | array of strings, or string | `[]` | Predefined tags for the docs. |
| `onInlineTags` | `ignore`\|`log`\|`warn`\|`throw` | `warn` | What to do when a doc uses a tag that isn't in the predefined `tags` list. |

## Content frontmatter

Docs use the [generic content frontmatter](./frontmatter), plus a few fields read directly by the docs template (not part of the shared schema, but supported the same way via arbitrary metadata):

| Field | Type | Default | Description |
|---|---|---|---|
| `show_title` | bool | `false` | Renders `# {title}` at the top of the body — useful together with `hide_title: true` if you want the title placed differently than the default heading. |
| `show_description` | bool | `false` | Renders the `description` right below the title inside the body. |
| `iframe` | string | none | URL embedded as a full-width `<iframe>` below the content. |
| `openapi` | string | none | URL of an OpenAPI/Swagger spec; renders a full Swagger UI below the content instead of (or in addition to) the Markdown body. |
| `show_source` | bool | `false` | Shows the raw source of the file (Markdown or Twig) in a code block below the content. |
| `show_children` | bool | `false` | Renders a card grid linking to this doc's direct children (title + description), useful for section landing pages. |

`hide_table_of_contents` keeps the generic default (`false`) for this plugin.



---
Last updated on 21/10/2026

