MojoPad

Templates and Placeholders

Templates give new pages a head start. They're just pages — no special editor, no separate format.

The new-page template

Create a page named Template: New Page. From then on, every new page begins as a copy of it — a link back to your index, a heading you always start with, a date. (Documents migrated from VoodooPad keep honoring an existing VPNewPageTemplate page too — but if both exist, Template: New Page wins. If you wrote a template in VoodooPad years ago, it is already working here.)

Settings ▸ Links & Pages ▸ New pages says the same thing and has a Show me button that opens your template — or starts one if you have not got one. It is a page rather than a box in a settings window, which is what lets a new page begin as anything at all; but a setting is where people look for it, so that is where it says so.

A change worth making twice

A template starts a page. If instead you want to make the same change to a batch of pages you already have — and keep that change to press again next month — see Bulk Edits and Stamps.

Many templates, and a picker

Any page named Template: Something is a reusable template — make a Template: Meeting, a Template: Project, a Template: Person. Once you have one, ⌘N offers a small picker — Blank, your default New Page, and each template by name — so you choose what a new page starts as. (No custom templates? ⌘N stays a single step, exactly as before.)

A template carries more than text: the new page inherits the template's tags, its page type, and the values of its properties — so a Project template can pre-set status: Active and the Project type in one go. The new page also takes the template's format — a rich-text template makes a rich-text page — and how it is shown: its reading width, what it exports as, and which properties show at the top of the page. Skip on export stays with the template, so you can keep your templates out of an export without leaving out the pages made from them. So does Outline Editing: turning it on for a template does not turn it on for the pages made from it.

The fastest way to make one: right-click any page in the sidebar ▸ Save as Template…. It copies that page — content, tags, type, and properties — into a new Template: page, ready to reuse.

Insert a template into a page that already exists

Not every page is born through ⌘N. Highlight text and choose Link and the new page appears without ever asking about templates; imported pages arrive the same way. You don't have to delete and recreate anything: stand on the page, type /template (or use the format bar's + menu), and pick one. It expands at your caret — variables filled in with this page's name and date, placeholders ready to type over — so a page a link created a moment ago, or one you made years back, takes a structure whenever you decide it needs one.

Variables

Write a name in double braces and the template fills it in. These expand the moment the page is created, using your Dates & Time settings:

WriteGet
{{date}}Jun 11, 2026
{{time}}9:41 AM
{{timeDate}}Jun 11, 2026, 9:41 AM
{{pageName}}the new page's name

Names and answers go in as words. A page's name can be a paper's title, and a property's answer can come from a PDF or a catalog, so whatever looks like formatting in them — a tag, a link, a picture — arrives as the characters it is, never as formatting in your page. On a Markdown template their brackets and symbols show as themselves too. The one exception is a formatted property (Note (formatted)): its formatting is what it is for, and it comes in with it.

Scriptlets run at creation too, with destination template — so a template can compute anything a script can. See Scripting: Scriptlets.

A property is a variable too

The Monday report. You keep a kind called Headlines, and it carries a property that asks a model for the five stories your field is running this week. Pressing ✦ fills it in. What you actually want on Monday is not that field — it is a piece of writing: your standing heading, the material underneath it, and a section left empty for what you think about it.

Write the property's name in braces and a template becomes exactly that:

# Report for {{pageName}}
_Compiled {{date}}_
## What the wires are running
{{Headlines This Week}}
## What I make of it

Stand on a page of that kind, insert the template, and every brace becomes that page's own answer. The kind holds the questions, ✦ goes and gets the answers, and the template turns them into a draft.

Or skip the template entirely: type {{ on the page. A list of that page's properties appears — the same gesture as [[ for pages — and picking one drops its answer straight into your writing, formatting and all. That is the quickest route from "✦ went and got it" to "it is in my article": stand where you want the material, type two braces, choose. What lands is ordinary content you can edit, cut and rewrite.

The same {{ on a page named Template: Something does the other half of the job: there it writes {{Name}} as a placeholder, because on a template you are describing what to fetch rather than fetching it. The list tells you which of the two it is about to do.

You get a fresh copy, and that is the point. What lands is ordinary writing — edit it, cut it, add to it, and nothing tries to keep it in step with the property afterwards. Next week, insert it again for a new draft. Nothing you wrote can be overwritten by a later fill.

Make the template a formatted page if the material has a design. A property a model filled may hold a laid-out answer — a wall of cards, headings, links. A formatted template keeps that design intact. A Markdown template flattens it to plain headings and paragraphs, because a Markdown page cannot carry the layout. Both work; one of them looks like the thing you saw in the field.

A name that is not one of your properties is left exactly as written, so a brace you have not defined yet stays visible instead of quietly becoming nothing.

Write the braces, not dollars. An older spelling, $Name$, also expands — templates in the wild are written that way and nothing needs changing. But $…$ is how you write a formula (see Math), and on a formatted page MojoPad turns one into a formula as you type. So a variable written with dollars on a formatted page becomes italic mathematics and never expands. Braces cannot be mistaken for anything: {{Name}} is the spelling to use, and if you have a template where a variable turned into a formula, delete it and retype it in braces.

Placeholders

Write <#like this#> anywhere in a template. When a page is created from it, the first placeholder is already selected — just type. Then press ⌃/ (Edit ▸ Select Next Placeholder) to jump to the next one, type, jump, type. A project template might read:

Project: <#name#>
Status: <#status#>
Next step: <#next step#>

The daily template

Template: Daily seeds Daily Notes instead of regular pages — same variables, same placeholders, and the same tags, page type, property values and look carried onto each day. And Template: Site reskins Static Publishing. One naming convention, three template kinds.