Page Front Matter Reference

Every Markdown file in content/ can include a YAML front matter block between --- delimiters at the top of the file. These fields control how SuCoS processes and renders the page.

Example

---
Title: Building a Blog with SuCoS
Date: 2026-03-10
PublishDate: 2026-03-10
ExpiryDate: 2027-03-10
Tags:
  - tutorial
  - blog
Type: blog
Draft: false
Weight: 10
Aliases:
  - /old-url/building-blog
URL: /tutorials/building-a-blog
Params:
  Author: "Jane Smith"
  HeroImage: "/images/hero.jpg"
---

Page content here...

Fields

Title

The page's display title. Used in templates as {{ page.Title }}, in browser tab titles, and in list pages.

Date

The content date. Typically used as the publish date for blog posts. Pages with a future Date are excluded from builds unless you pass --future.

Date: 2026-03-10

PublishDate

The date the content should become publicly visible. Defaults to Date if not set.

ExpiryDate

After this date, the page is excluded from builds unless you pass --expired.

Lastmod

The date of the last meaningful edit. Does not affect visibility — used for display and sitemaps.

Tags

A list of tags. SuCoS automatically generates a /tags/ section with a page for each unique tag.

Tags:
  - tutorial
  - beginner

Draft

When true, the page is excluded from normal builds and sucos serve. Use sucos build --draft or sucos serve --draft to include drafts.

Weight

An integer used to sort pages within a section. Lower weight comes first. Useful for documentation pages where alphabetical or date order isn't right.

Type

The content type. Defaults to the section name. Used for template lookup — a page with Type: landing will first look for a landing/single.html template before falling back to _default/single.html.

URL

Overrides the computed URL for this page.

URL: /tutorials/building-a-blog/

Aliases

A list of old URLs that should redirect to this page. SuCoS creates HTML redirect files at each alias path.

Aliases:
  - /old-path/my-post
  - /another/old-url

Params

A map of custom key-value pairs. Access them in templates with {{ page.Params.myKey }}. Useful for per-page metadata that doesn't fit standard fields.

Params:
  HeroImage: "/images/hero.jpg"
  ReadingTime: 5
  ShowComments: true