Axismundi Table of Contents
·
On-page table of contents block that builds from a post's headings and keeps the heading ids in sync.
Axismundi Table of Contents provides the axismundi/toc block: a dynamic,
server-rendered list built from the current post’s headings, with a scroll-spy
that marks the section you are reading.
The block render and a render_block_core/post-content filter share one
deterministic slug function, so the table-of-contents anchors always match the
heading ids — regardless of render order or where you place the block (a template
aside or inside the content). Author-provided HTML anchors are respected, and
duplicate headings are de-duplicated (-2, -3).
- Two placements: a sidebar rail, or a collapsible disclosure above the
content (a native
<details>whose summary can echo the current section). A „Table of contents (above content)“ pattern ships the disclosure ready to drop before the post content. - Builds from
h2–h4by default (configurable per block). - Unordered list by default; switch to a numbered (ordered) list per block.
- Emits the shared
toc-list/toc-h2…h4/is-currentclass vocabulary so a theme’s table-of-contents skin couples for free; ships a Material Design 3 token skin (with fallbacks) in the meantime. - Scroll-spy marks the current heading and clears when you leave the content (above the first heading or past the post content).