pagehaus

Blog

Write posts in your dashboard and press Publish. Pagehaus turns them into plain HTML pages on your site: a list of posts, a page for each post and tag, an RSS feed and a sitemap. On every plan.

Start a blog

  1. Open your site and choose the Blog tab.
  2. Give the blog a title and choose its address: /blog/ unless you'd like /news/ or /notes/.
  3. Press Start a blog. A first draft, "Hello, world", opens in the editor.

Starting a new site? The Blog template comes with a blog, three sample posts and a home page that lists the latest ones.

Write a post

The editor has the post's details at the top and the text below, with a live preview in your site's design.

  • Address: the end of the post's link, made from the title (/blog/green-tomato-chutney/). Change it before you publish: links people shared stop working if you change it later.
  • Date: leave it empty and the post gets the day you publish it. A date in the future keeps the post hidden until then; it appears the first time you publish on or after that day.
  • Tags: separated by commas. Each tag gets a page listing its posts.
  • Description: one or two sentences, shown in the list of posts, in search results and when someone shares the link. Without one, the start of the post is used.
  • Cover image: an image shown above the post and in link previews.

Posts are written in Markdown: ## Heading, **bold**, *italic*, [a link](https://example.com), - lists, > quotes, tables and code. HTML works too, for anything Markdown can't do.

Images: paste or drag an image into the text, or use Add image. It's uploaded to /blog/images/ and placed where your cursor is. Write a short description between the [ ] for people using screen readers.

Drafts and publishing

  • Save draft (or Ctrl/⌘ + S) keeps the post private. Nobody can see drafts.
  • Publish makes the post public and updates the blog: the post's page, the list of posts, tag pages, the feed and the sitemap.
  • For a published post, Update saves and publishes your changes, and Unpublish turns it back into a draft and takes its page down.
  • The Blog tab's Publish blog button publishes everything at once, for example after changing the settings. It shows how many changes are waiting.

Publishing writes the files in your blog's folder (/blog/). Don't edit those by hand: they're replaced each time. Your images in /blog/images/ are never touched. Publishing never overwrites a file it didn't make; if one is in the way, it tells you which.

Every publish saves a version first, so you can undo it from the History tab, deleted posts included.

How it looks

If your site has a shared header and footer in /includes/ (see Server Side Includes), blog pages use them, so the blog looks like the rest of your site. Each page sets the title and description variables, and page to blog for highlighting the menu. Sites without includes get a simple layout of the blog's own. Change either in the Blog tab's Settings.

Style the blog in your own stylesheet with these classes: blog-post, blog-body, blog-meta, blog-tags, blog-cover, blog-list, blog-summary, blog-pager and blog-back.

Link previews and the feed link

For a title, description and image when someone shares a post, and so browsers and feed readers find your feed, add this line to your header include, just before </head>. The Blog tab can add it for you.

<!--#config echomsg="" --><!--#echo var="blog_head" encoding="none" -->

On the rest of your site it prints nothing.

Show the latest posts on another page

Publishing also writes /blog/latest.html: your five newest posts as a list. Include it anywhere, such as your home page:

<h2>Latest posts</h2>
<!--#include virtual="/blog/latest.html" -->

Feed and search engines

  • The RSS feed (Atom format) is at /blog/feed.xml, with the 20 newest posts in full.
  • The sitemap is at /blog/sitemap.xml. The Blog tab can add it to your robots.txt so search engines find it.
  • Links in the feed, sitemap and link previews use your custom domain once it's live. After connecting one, press Publish blog once to use it.

Posts are files

Your posts are Markdown files in /.blog/posts/, and the settings are in /.blog/blog.json. Names starting with a dot are never public. You can edit them over SFTP or in the file editor, then publish from the Blog tab. Each post starts with its details:

---
title: Green tomato chutney
slug: green-tomato-chutney
date: 2026-10-15
tags: [kitchen, garden]
description: What to do with the tomatoes that won't ripen.
draft: false
---
Every October there's a bowl of green tomatoes…

If a file can't be read, the Blog tab says what's wrong, and nothing is published until it's fixed.

Write with an AI assistant

With Pagehaus connected to Claude or ChatGPT, ask for a post: "Write a post about our new opening hours as a draft on my blog." Assistants save drafts unless you ask them to publish. Scripts can use the API.