Bolt CMS Docs
Sign in

Architecture

Markdown example

This entire page is a .md file — no PHP. Bolt rendered it to HTML with Parsedown and flowed it through the same layout pipeline a .php page uses.

A page with no PHP

This page lives at pages/markdown-example/index.md. Bolt read the frontmatter above into $page['config'], rendered everything below the --- to HTML with Parsedown, and wrapped it in the chosen header, layout, and footer — the same pipeline a .php page flows through.

The frontmatter is not fenced: the Key: Value lines come first and a single line that is exactly --- closes the block. Keys are normalized to lowercase with spaces turned into underscores, so Page Title becomes page_title (which the default layout reads for the heading above).

What Parsedown renders

  • Bold, italic, and inline code
  • Ordered and unordered lists
  • Tables, blockquotes, and fenced code blocks
  • Links, e.g. the Parsedown project

A fenced code block

$page['config']['layout'] = 'default';
ob_start();
// a .php page would build its markup here
$page['content'] = ob_get_clean();

A table

Page type Produced by Best for
.php output buffering anything dynamic
.md frontmatter + Parsedown static prose

Reach for Markdown when a page is mostly text and needs no logic. The moment you need data, conditionals, forms, or includes, use a .php page — both produce the same $page shape, so switching a page's type later never changes its URL.

Resolution

A .php file at the same route (markdown-example.php or markdown-example/index.php) would take over immediately, because PHP wins a tie with Markdown. See the Page types doc for the full four-candidate resolution order.

Page types Extensions