Obligatory "ignore this space" : https://sacoronavirus.co.za

If you're here you don't know what's good for you. But I also spend far too little time on the beach.

The shore gives us an example of something that's ever-changing yet always the same (to the user). But the lack of version control is appalling. In fact, it's offensive. A version vector, though both an internationally recognized standard and a well-established trend, sends this user in all directions. Keeping things to one dimension, and noting that one update is not comparable to another, real numbers look at us and ask why they're being kept out the picture. I like to think simplicity speaks for itself, but keeping things to simplicity itself we're at risk of hearing about the moon and the stars.

The api is necessary information to note, and in the version string it is shown as the denominator (because I've just said I'm keeping the number to one dimension).

There is no reason to get rid of apis, but it must be understood that necessity is the mother of testing--things cannot be safely amended without a use case. Moving to the latest api should generally be safe to do, as well as advisable, but it is one thing that must not be rushed.

This page is the authoritative url for the update notes for Egg-SGML.

The built-in set of tags, as described in the following table, are appropriate for static websites.

<cache_control/>static dynamicApplies rules for If-Modified-Since handling (cannot be in an include file).
<play/>idReplaced with the (structured) contents of a clip.
<record>idPlaces the contents (sub-tree) into a clip, overwriting if necessary.
<include/>pathReplaced with the contents of the web relative path.
Note that the mapping does not utilize the web server's url mapping.
<form.cache_dynamic>Substitute tag: produces a <form> with the same attributes, but provides a query parameter which allows caching of blank forms.
<shipyard>Dry-docks.
<sailing>Complementary to <shipyard>.
<a.site>href activeclassSubstitute tag: produces <a> with the same attributes, but using activeclass instead of class if href points to the enclosing webdoc.
<redirect/>locationPHP rules: this aught to be the very first tag.

On the matter of self-closing tags, it must be understood that whether a tag is self-closing or enclosing, matters to the processing of them, not the parser: for all tags are closed automatically when their parent tag is closed. But if you don't self-close <include> what comes after it is now a sub-tree and therefore ignored;</include> you will find out for yourself by experimentation that the Egg-Sgml parser treats all tags equally--with the exception of <script/> and <style/>.

Getting started.

/templates_config.xml sets things up that can't be setup after a webdoc has been found. It only contains the one tag, and output is sent to /dev/null.

<main!-- api --
no-doctype!-- < 6Should be present. --
redirect-to-ssl
fallback=404!-- Loaded in case the requested webdoc is not found. --
shipyard-auth=923f1!-- >= 5Overrides value in shipyard.txt (file is still required). --
extension=.xgml
alt-extension=.xml
extension-optional
shipyard-doc=/shipyard!-- Loaded when shipyard auth fails. --
rootdoc=index
>Values are not defaults.</main>

Shipyard.

The file shipyard.txt aught to be present on test servers, but it is recommended to keep this as an untracked file. The main intention is to prevent search engines from including your test sites, but if you're concerned about prying eyes an update will be necessary so as to keep the auth code inaccessible from the web.

Updates.

These are grouped by api, which is therefore put as the number on top.

5/1Optional (downgrade from recommendation)
Place shipyard auth code into templates_config.xml (see shipyard-auth in the reference).
Remove the contents of shipyard.txt (the empty file must remain).
6/2Entry code
Custom templates.php requires modules.php (enqueue_modules).
6/1Cleanup
Remove no-doctype from templates_config.xml.