
The Warehouse District Art Hop site does not look like a wiki. It has a landing page, its own navigation, and a list of this month’s venues. It is a wiki anyway. Every page on it is a markdown file in a GitHub repo, same as my other wikis.
Wikidown renders it with templates. The engine is Fluid, a Liquid template engine for .NET, the same template language Jekyll and Shopify use. Pages carry no template code and no front matter. The templates live beside them, in folders called _layouts and _includes, and the config file says which page gets which layout.
The landing page is a layout. Two lines in the config make the Home page the site root and send it through the landing layout instead of the wiki one. The layout is a plain HTML document with Liquid tags where the words go. The hero text is the Home page itself, pulled in with a filter called wiki_body. The highlights section is the Highlights page. The membership section is the Membership page. To change the words on the home page, I edit a wiki page. Nobody touches the HTML.
wikidown:
root_page: /Home
layouts:
/Home: landing<div class="intro">{{ "Home.md" | wiki_body: "strip_title" }}</div>The venue list is data. Each venue has its own wiki page, written once. A small JSON file for each month says who is in that month, in what order, with the map stop number, the hours, and a note. One line in another file says which month is current. The template puts the two together: the month’s list, in order, each venue in its own words. Next month’s hop is a new JSON file and that one line changed.
{
"page": "Venues/Spetzler-Designs.md",
"stop": 1,
"address": "2100 W Broadway #19",
"hours": "10am to 4pm",
"note": "Tour Gary's shop/studio to see what kind of mechanical magic is happening this month."
}{% assign hop = site.data.hops[cfg.currentHop] %}
{% for entry in hop.venues %}
{% assign vp = site.pages | where: "path", entry.page | first %}
{{ vp | wiki_body: "strip_title" }}
{% endfor %}Even the price on the member button is data. The layout reads the membership tiers from the same file and prints the lowest one. Change a tier and the button follows.
{% assign minprice = cfg.membership.tiers | map: "price" | sort | first %}Publishing changed to match. The site used to build with GitHub’s Jekyll builder, with a generated navigation file to keep in sync and a script to fix up links. Since Wikidown 0.14 it builds in GitHub Actions with wikidown export-html, the same command I run on my own machine. One renderer, so the preview is the site that ships.
The split is the point. Words in pages, lists in data files, looks in templates. Anyone on the project can edit a page. An agent can edit a page. The templates just stand there and make it look like a marketing site.
The wiki was a marketing site all along.

