Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,075 of 9,075 pages
About the help in other languages
All help pages

A static blog with Exponential

A tutorial for bloggers and the people who set up blogs for them: write posts in Exponential, publish the blog as a free static site on GitHub Pages, and keep its search and its archive pages working.

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/guides/a-static-blog-with-exponential.md

On this page

A static blog with Exponential

A tutorial for bloggers and the people who set up blogs for them: write posts in Exponential, publish the blog as a free static site on GitHub Pages, and keep its search and its archive pages working.

Guides · Related: Make a free website in 15 minutes, Static publishing: dynamic features

What you'll have at the end

A blog at https://<owner>.github.io/<repository>/ or your own domain, with every post, its archive and list pages, a search that works in the browser, and new posts published a few minutes after you press Publish.

1. Check what a blog needs

Part of the blogOn the static copy
Posts, images, categoriescopied as they are
List pages with paging (/blog/(offset)/10)copied: Exponential's view parameters are part of the path
Pages that only exist with a query string (/blog?page=2)skipped and reported; use view parameters in the design
Searcha search page with an index in the browser (Search=enabled)
Commentsa short text with a link to the live post, or left out
Login, a contact forma short text, or the form posts to the live site (Forms=endpoint)

If comments matter to you, keep them on the live site, or use a comment service that runs in the browser and add it to the design.

2. Make the target

In Setup > Static publishing > New target: the blog's siteaccess, a GitHub repository, a token or deploy key, relative links and the base path /<repository>/ (or your own domain in step 6).

The setup wizard of a new target
The setup wizard of a new target

In step 7, What the build holds, switch the search page on. If the blog has a contact form, choose whether it posts to the live site or is hidden (Search, forms and comments).

Step 7 of the wizard: files, extras and post-processing
Step 7 of the wizard: files, extras and post-processing

3. Leave out what is not a post

Tag clouds, the registration and other pages that start a session for anonymous visitors are refused by the build. Leave them out:

ExcludePaths[]
ExcludePaths[]=/user/*
ExcludePaths[]=/tags/*

4. Build and look

Build, then open Preview. Check a post, a list page with paging and the search page. The report lists what was replaced (search, forms, comments) as degraded.

The report of a build: pages, files and what was replaced
The report of a build: pages, files and what was replaced

5. Publish

Press Publish, then in the repository's Settings > Pages deploy from the branch gh-pages. A few minutes later the blog is online.

6. New posts publish themselves

In step 8, Triggers, tick When content is published. A new post marks its own page and the list pages that show it stale; a few minutes after your last change the cronjob part staticpublish builds and publishes them. A publish that fails is retried, and you get an e-mail if you set Notify on failures.

Next step

A static documentation site.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x