MallaDocs

CMS

Collections, fields, items, rich text, drafts, scheduling, versions and dynamic template pages.

User guide

The CMS holds your structured content: blog posts, products, team members, case studies, job openings. Editors work in a clean content view while designers keep the layout safe.

Collections and fields

Open the CMS workspace and press New collection. Every collection starts with a title and a slug; add the fields you need.

TextPlain text, one line or many.
Rich textHeadings, lists, quotes, code, links and images.
SlugThe URL part, generated from a text field.
ImageAn uploaded image with alt text.
FileAny uploaded file.
ReferenceOne item of another collection.
Multi referenceSeveral items of another collection.
NumberPlain, currency or percent.
DateDate and time.
ToggleOn or off.
OptionOne value from a fixed list.
ColorA CSS colour.
LinkA URL or a site path.
Video URLYouTube, Vimeo or a video file.

Fields can be required, have validation and defaults. Changing a collection’s fields reaches the published site without a full republish.

Items

The items view is a searchable table with status filters and bulk actions. Press New item or open an item to edit it in a side sheet. The slug is generated from the title until you change it.

Item lifecycle
DraftThe working copy. Only editors see it.
ScheduledPublishes itself at the chosen time.
PublishedThe live copy visitors see.
ArchivedKept, but off the site.
  • Save keeps your changes as a draft. The live site keeps showing the published copy.
  • Publish copies the draft to the live copy. Unpublish takes it off the site.
  • Schedule picks a date and time; the item publishes itself then.
  • Versions lists earlier saves; restore any of them.

Rich text

Rich text is stored as structured content, never raw HTML, so it is always safe to render. On the canvas, a Rich text element renders a rich-text field and applies your site classes per tag (for example every h2 gets heading-md).

Show content on pages

  1. Add a collection list

    Insert a Collection list and choose the collection. Filter, sort and limit in the inspector.

  2. Design one card

    The first child of the list is the template. Design it once; it repeats for each item.

  3. Bind fields

    Bind text to item.title, an image to item.cover, and a link to the item’s page with Item page in the link’s picks (see linking list items). Expanded references give you the referenced item, so item.author.name works.

Under the hood, the list runs a CMS query through the built-in CMS integration:

json
{
  "operation": "cms.list",
  "input": {
    "collectionId": "col_posts",
    "filter": [{ "field": "featured", "op": "eq", "value": true }],
    "sort": [{ "field": "date", "dir": "desc" }],
    "limit": 6,
    "expand": ["author"]
  }
}

Template pages

A template page has a dynamic path such as /blog/:slug and belongs to a collection. It renders once per published item, with item in scope for every binding. Bind the page’s SEO title and description to item fields, for example item.title + ' | Blog'. Pick which item to preview on the canvas from the inspector.

How publishing works

Publishing an item does not republish the whole site. Only the pages that depend on that collection, its template page and any list that queries it, are rendered again. See Publishing.

Content editors

Give writers the content editor role. They can edit CMS items and the text on the canvas, but not the design, data or logic. See Team and roles.