A template in SilverBullet is a string that contains ``````````````````````````````````````````````````````g Space Lua. Templates are a mechanism for dynamically rendering content in your pages.
They are often used in Slash Templates and Page Template.
Creating templates
Use template.new to create a template function from a string. By convention, template strings use [==[ and ]==] as delimiters:
templates.greet = template.new[==[Hello, ${name}!]==]Call the template with a table of values:
${templates.greet {name = "World"}}Rendering collections
The preferred pattern is to apply a template to each row directly in your query’s select clause:
query[[
from p = index.pages()
order by p.lastModified desc
limit 5
select templates.pageItem(p)
]]The older template.each(collection, template) API still works (see API/template > template.each(collection, template)), but the select-based form is more compact and composes naturally with the rest of Space Lua/Integrated Query.
Pre-built templates
The standard library provides several commonly used templates in the templates table:
| Template | Description |
|---|---|
templates.pageItem | Renders a page as * [[pageName]] |
templates.fullPageItem | Similar to pageItem but rendering the full page name (including folders) |
templates.taskItem | Renders a task as a togglable checkbox item with a link to its source so that it can update |
templates.itemItem | Renders a list item with a link to its source |
templates.paragraphItem | Renders a paragraph with a link to its source |
templates.tagItem | Renders a tag as a linked hashtag |
Page templates
Page templates are pages tagged with #meta/template/page. They serve as blueprints for creating new pages — you can configure them with suggested names, keyboard shortcuts, and commands.
Slash templates
Slash Templates are pages tagged with #meta/template/slash. They define slash commands that insert templated content at the cursor position. The last component of the page name becomes the slash command name.
See also: template, Page Template, Slash Templates, Space Lua