Problem
Currently, when editors want to link to internal pages in the WYSIWYG editor, they must manually type or copy/paste URLs. This requires either:
- Opening a second Directus instance to find the page slug
- Memorizing URL structures and slugs
- Maintaining a separate reference document
This creates a poor editorial experience compared to CMSs like WordPress, where you can highlight text → click link → search/select from existing pages.
Proposed Solution
Add an “Internal Link” option to the WYSIWYG link dialog that:
- Lets editors highlight text and click the link button
- Shows a dropdown/search interface to select a collection (posts, products, etc.)
- Shows a searchable list of items from that collection (with title/name, not just slug)
- Automatically generates the correct URL structure
Use Case
Current workflow:
- Writing an article about percussion instruments
- Want to link the word “quijada” to the existing Quijada instrument page
- Must open
/admin/content/instrumentsin new tab - Find the Quijada entry
- Copy the slug
- Switch back to article
- Manually construct
/instrument/quijada/URL - Paste into link field
Desired workflow:
- Highlight “quijada”
- Click link button → “Link to Internal Page”
- Select collection: “Instruments”
- Search/select: “Quijada”
- Done - URL auto-generated
Technical Considerations
- Should work with existing WYSIWYG fields without requiring field recreation (important for Directus 11 where changing interfaces deletes content)
- Should be collection-agnostic (not hardcoded to specific collections)
- Could store as
#collection/slugsyntax and let frontend parse, or resolve to full URL - Bonus: Show “broken link” warning if linked item is deleted or unpublished
Similar Feature in Other CMSs
- WordPress: Built-in page/post search in link dialog
- Craft CMS: Entry selector for links
- Contentful: Entry link field type with search
This would significantly improve the editorial experience and reduce errors from manually typed URLs.
Current Workarounds
- Manual URL entry (error-prone)
- Custom M2A link blocks (breaks inline text flow)
- Custom TinyMCE extensions (requires maintenance, collection hardcoding)
Would love to see this as a native Directus feature. Happy to provide more details or help test if this gets prioritized!