Pages that are not posts

Damian Cugley

Even a basic blog needs some non-post pages (an about page, perhaps a privacy policy). Or we could use Mismiy to generate arbitrary documentation hierarchies, with the blog posts being just a little feature on the side.

Not-post pages can be read from a directory the same as posts. The only real difference is whether they are included in the index page’s reverse chronological order and the atom feed. In fact posts are just a special kind of page.

The new plan is as follows: first, there can be more than one source of pages, each a directory containing .markdown files. So we might have directories named posts and pages. These get merged together on the generated site, so they better use non-overlapping file names. This is easy if post files always start with the date.

Second, sources have an property named kind that is either page (the default), or post. The kind property might be set explicitly in in the META.yaml file, but failing that, the posts directory will have kind post, and any other will be page.

The kind of page controls the templates used for rendering pages (post.html.mustache versus page.html.mustache). The index template will need to link to both kinds of content, but for a first version it is probably OK to hard-code links in to the template for index.html. In Markdown normal relative links will work, so we can write

Blah blah link to [about] blah

[about]: about.html

And get something like

Blah blah link to about blah

Feed files will be created for post sources. For now we assume there will be a single feed even if there is more than one post source. We can work out how to do multi-feed sites when we find we have a need for one.