Pulled live from the source repository · Content TOC on codebit.nl
Distribution release — Content TOC can now self-update through Addon Expert's license-gated registry.
addon.setup.php declares a registry source (updates.nivoli.com, product content_toc). With a license key entered under Addon Expert → Settings → Registry license keys, the Releases screen tracks Content TOC and installs updates in one click — the download is signed and its sha256 verified before the swap.Also rolls up the 2.1.4 housekeeping (LICENSE → LICENSE.md, minor Layout tweak).
Install: extract content_toc/ into system/user/addons/, then Developer → Add-Ons → Content TOC → Update.
Public-facing links (CP footer, author_url, docs_url) now point to codebit.nl; source repo stays private. Installable zip attached.
Release-ready for ExpressionEngine.com: adds the add-on icon (icon.svg) and a docs_url. Attached content_toc-2.1.2.zip is the installable package (unzip into system/user/addons/). No behaviour change.
Fixes a misleading Settings help text: the *TOC list id* field still said "back-to-top links point here", but in 2.1.0 the back-to-top destination moved to its own *Back-to-top target* field. Following the stale hint could lead to setting list_id to a content-container id and colliding with the page. The help now points to the right field. No code/behaviour change.
Polish based on real use:
back_to_top_target (the id to jump to; blank = top of page), the link is skipped after the first heading (you are already at the top there), and the default label is now "↑ Top". Previously it pointed at the TOC list, which was the wrong destination.Content TOC graduates from a bare plugin to a full module with a Control Panel, and gains a lot of configurable behaviour.
Control Panel
New behaviour (per-site default + overridable per tag):
.is-active){exp:content_toc:reading_time} with configurable words-per-minutemin_count threshold, back-to-top links, and a has_toc conditional pairSettings resolve tag param → CP setting → default. Tag names and output are unchanged for existing templates, so upgrades are seamless. MIT licensed.
Namespace changed to Nivoli\ContentToc to unify all first-party add-ons under the Nivoli vendor namespace (alongside cf_image, game_import). Metadata only — no behaviour change.
Namespace set to Codebit\ContentToc to match the vendor convention used across the other add-ons. Metadata only — no behaviour change.
Renamed the plugin to reflect what it actually is — a general HTML table-of-contents engine, not a walkthrough-specific one.
walk_toc → content_toc, class Walk_toc → Content_toc, tags {exp:walk_toc:*} → {exp:content_toc:*}, repo ee-walk-toc → ee-content-toc.See the README for tags and parameters.
A dependency-free ExpressionEngine plugin that turns any HTML body into a navigable document: stable heading anchors, a <ul> table of contents, a section count, and a schema.org ItemList of the headings — all server-side.
Generalised from its walkthrough origins so it works on any field/content:
process levels="h2,h3" — choose which heading levels to anchor & list (first level = primary/section level)toc list_id="…" list_class="…" — control the TOC list markupjsonld base_url="…" name="…" — emit an ItemList of the primary headings (HowTo rich results were deprecated in 2023, so an ItemList is the current honest markup)Defaults reproduce the original output, so existing templates are unaffected. MIT licensed.