jekcms has no [shortcode] parser, no ShortcodeParser class, and no bracket syntax anywhere in the editor. That's a deliberate gap, not a missing feature: here's what actually handles galleries, embeds, and reusable layout in jekcms.
There Is No Shortcode System
If you're looking for how to register a [gallery] or [youtube] shortcode in jekcms, the short answer is: you can't, because there's no shortcode parser to register it with. There's no ShortcodeParser class, no process_shortcodes() hook, no bracket-syntax parsing anywhere in the codebase. This isn't a case of the feature being undocumented — it simply isn't there.
That's worth explaining rather than just correcting, because shortcodes solved a specific problem in older CMSes: how do you embed a dynamic, non-text element inside a plain-text content field? jekcms doesn't have that problem in the first place, because its editor isn't a plain-text field.
What jekcms Uses Instead: A Real WYSIWYG Editor
jekcms's post editor is built on Tiptap, a rich-text editing engine, wrapped in jekcms's own jek-editor. Images are inserted, resized, aligned, and captioned directly in the editor as first-class <figure>/<figcaption> elements — not as a shortcode that gets expanded at render time. What you see while editing is what gets rendered on the page; there's no intermediate bracket syntax to parse, validate, or accidentally break with a typo.
For the specific things shortcodes are traditionally used for:
- Image galleries: handled through the editor's native image insertion, sized and aligned inline. There's no separate gallery block or shortcode — you place images the way you'd place them in any modern rich-text editor.
- Video embeds: pasted or embedded as standard HTML (an
<iframe>for YouTube, for instance) directly in the content, the same way you'd embed a video on any hand-written HTML page. - Callouts and custom formatting: there's no built-in callout block type. If your theme needs one, it's a CSS class on a standard HTML element in the editor's output, not a jekcms feature.
If You Need Genuinely Reusable, Theme-Level Blocks
Shortcodes are sometimes used less for embedding media and more for injecting a reusable chunk of markup — a call-to-action box, a pricing table — into many posts at once. In jekcms, that job belongs to the theme layer, not the post content layer. Every theme's functions.php exposes a get_partial($name) helper that theme developers use to render reusable template fragments, and themes that declare Theme Customizer options let you edit things like colors, custom CSS, and layout choices without touching post content at all. If you need a specific block to appear inside post bodies themselves (not just around them), that's a manual HTML insertion in the editor today — there's no dynamic tag system standing in for it.
Why This Is a Deliberate Trade-off
A shortcode parser is also a small templating language living inside user-generated content — every additional bracket syntax is another thing that can break on unescaped input, conflict with literal square brackets a writer actually meant to type, or need its own XSS-hardening pass. jekcms's editor sidesteps that entire class of problem by keeping content as real, renderable HTML from the moment it's written, rather than a placeholder syntax that gets expanded later. The trade-off is that anything genuinely dynamic and reusable across many posts needs to live in the theme, not in post content.