Content Stacks
Reusable content blocks you build once and embed across multiple pages via a single shortcode.
What It Does
A Content Stack is a JSON-backed block of content (HTML, markdown, images, videos, YouTube/Facebook/X embeds) that you drop into any page with . Edit it once, it updates everywhere it’s embedded. Stacks support 1–3 column layouts, drag-and-drop reordering, media drops from the browser, and style presets for HTML blocks.
Getting Started
- Open Content Stacks from the admin menu.
- Click + New Stack in the top action bar, name it, and open the editor.
- Add blocks: HTML, markdown, YouTube, image, video, or drag media in from the Media Browser iframe.
- Reorder blocks by dragging. Pick a layout (1, 2, or 3 columns).
- Save. Embed on any page with
.
Masonry Card Grid
The stack browser is a masonry card grid with variable-height cards, so longer previews don’t get clipped. Each card has a trash icon on hover for quick delete. The “+ New Stack” button lives in the top action bar, and Save/Delete actions produce a toast at top-right so you always know a save landed.
HTML Block Style Presets
HTML blocks ship with one-click style presets:
- Glass — frosted translucent card
- Card — standard opaque card
- Callout — accent-bordered highlight block
- Pad — padded container, no visible box
- Unwrap — raw HTML, no container styling
Pick one per HTML block to match the page’s vibe without writing CSS.
Shortcode Picker & Media Drops
The shortcode picker’s sections are now collapsible and drag-reorderable — arrange the sections you use most at the top. Your order persists via localStorage. To add media, open the Media Browser iframe and drag a thumbnail directly into the stack’s playlist — the drop lands at the Y position you release, inserting an image or video block exactly where you want it.
Embedding Stacks
Primary form: . The slug is the human-readable name you gave the stack. Legacy form: — still works, resolves through a slug-first fallback so old pages don’t break. New embeds should always use .
Gotchas / Tips
- Renaming a stack copies the data to the new slug filename; the old file hangs around as a 7-day alias.
- If an embed goes blank, confirm the slug in the registry (
admin/data/content-stacks-registry.json) matches what’s in the shortcode. - Markdown blocks render via Parsedown — the pre-rendered
htmlfield is preferred if present. - Drag-to-insert uses drop Y position. Aim carefully on long playlists.
- HTML block style presets are non-destructive — switching preset doesn’t alter your content.
- Don’t hand-edit
content-stack-{N}.jsonwhen acontent-stack-{slug}.jsonexists — the slug version wins.