dotCMS / dotCMS/core

Block Editor: support inline contentlet references inside paragraphs

Open
#35,473 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

  • #36262 by @rjvelazco — closed without merging
dotCMS : SDK dotCMS: Block Editor Enhancement OKR : Customer Support Type : New Functionality
Dominant language
Java
Stars
970
Forks
486
Avg merge
3d 33m
Merged PRs (30d)
170

Description

Summary

Today the Block Editor only supports contentlets as full block-level elements. Users want to embed a contentlet inline within a paragraph — similar to Notion's inline mentions — so the contentlet's title (or other display field) renders as a live, linked reference inside the surrounding text.

https://github.com/user-attachments/assets/7daf1dd6-6203-4805-8faf-0793cdd80808

Use case

A content contributor writes a paragraph and wants to reference another contentlet (e.g. a product, page, or "MMC link") inline within the sentence. Today they can only:

  • Type a static link (loses single source of truth — breaks if the target's URL/title changes), or
  • Drop a full block-level contentlet (breaks the paragraph flow).

The inline contentlet would resolve both:

  • Live reference: title/label updates automatically when the source contentlet changes
  • Single source of truth: links and metadata stay in sync
  • Inline rendering: the reference sits within the paragraph, not as a standalone block

Behavior

  • User types / (or similar trigger) inside a paragraph
  • Selects "Inline contentlet" (or similar)
  • Picks a contentlet via the existing selector
  • The contentlet renders inline, showing the title (configurable display field) as a linked reference
  • The reference stays bound to the contentlet ID, not to the title text — so renames propagate

Scope notes

This is not a breaking change but it touches multiple layers:

  • Block Editor UI (new inline node type)
  • Stored JSON schema (inline content node)
  • VTL rendering (must render inline, not as a block)
  • SDK rendering (consumer must be able to provide a custom inline component)
  • Documentation

Tiptap (the underlying library) has a community extension for inline mentions/references that we should evaluate as a starting point rather than building from scratch.

v1 scope

Inline contentlet reference (Notion-style mention) only. Other inline cases (buttons, custom blocks) deferred.

Open questions

  • Display field configuration: per content type, or global default?
  • Rendering API for SDK consumers — how do they register a component for the inline node?
  • VTL fallback rendering — what does the default look like?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the Block Editor implementation, stored JSON schema, VTL rendering path, and SDK rendering API, then evaluate the mentioned Tiptap community extension. Done means an inline contentlet node can be selected in a paragraph, persists its contentlet ID, renders inline with a configurable display field, supports an SDK component or VTL fallback, and is documented.

Written by the indexing model from the issue text.

Assessment

Domain
backend, documentation, frontend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.