Domma CMS User Manual

Pages

Updated by Darryl Waterhouse on 13 October 2026 3 min read

Pages are stored as Markdown files in content/pages/. Each file has a YAML frontmatter block at the top followed by the page body in Markdown, with shortcodes anywhere in the body. Edit them at Content > Pages.

URL mapping

File path Public URL
content/pages/index.md /
content/pages/about.md /about
content/pages/services/index.md /services
content/pages/services/design.md /services/design
content/pages/404.md Shown for any missing page, once published

Changing a page's URL Path in the editor moves the file. Menu links to the page follow it, and SEO (when switched on) adds a redirect from the old address.

Frontmatter reference

---
title: My Page
description: A short description for search results.
status: published        # published | draft
layout: default          # a layout from config/presets.json
visibility: public       # public | private | a role | =a role | a list
project: core            # blank = inherit from the URL
tags: [one, two]         # editorial tags - weighted in site search
sortOrder: 99
category: Guides
theme: ocean-light       # optional per-page theme
---
# Page heading
Your Markdown content goes here.

The editor's Page Details tab sets all of these, and the SEO tab sets the page's search title and description.

Drafts and previews

A page with status: draft answers 404 to visitors. Signed in with permission to view pages, you see the real page at its real address with a draft banner and a Publish button. New pages start as drafts.

  • Live Preview in the editor shows the unsaved page as it will look, at desktop, tablet or phone width.
  • Share link (in Live Preview) makes an expiring link that shows one unpublished page to someone with no account. You can withdraw it at any time.

Who can see a page

visibility takes public (the default), private (the level-0 role only), a role name ("that role and above"), =role ("that role only"), or a list of these. A visitor who may not see a page gets a 403. A page in a disabled project answers 404 to everyone. See Users & Roles for how the role ladder works.

Projects

A page belongs to a project - the project field, or its URL's. To remove a project and everything filed under it - its pages with their versions and share links, collections and their entries, forms, blocks, views, components, actions, menus, API endpoints and tokens - open Projects > (the project) > Settings and choose Delete with contents. It lists exactly what will go and asks you to type the project's slug back; links to its pages leave every other menu. Nothing is touched while a user or role is filed under the project (people are never deleted with content), while one of its menus fills a site slot such as the navbar, or while a built-in collection is filed under it. A starter's example pages show Remove sample content on the project's overview, which does the same.

A page is added to the navbar or footer in Content > Menus, not in the page editor. See Navigation.

Layouts

Layouts are defined in config/presets.json: default, with-sidebar, minimal, blank, landing, article, product, dashboard and wide. Pick one per page in the editor; new pages use default (pageDefaults in config/content.json). Manage them at System > Layouts.

History

Every save keeps a version. The editor's History tab lists them with their date and time (dd/mm/yyyy HH:mm) and lets you compare it with the editor, restore or delete it, or save a named version. Restoring saves a snapshot of the current page first. Unsaved work is kept as a draft in your browser and offered back if you return.

Custom CSS

The editor's CSS pane edits content/custom.css, which applies to the whole site, not just the page you are on. It is also under System > Site Settings > Custom CSS.