WebFactory Default Index Page
Introduction
WebFactory CMS 0.2 system is a super simple CMS system for static web pages.
One main difference towards common static site generators is that most functionality including site generation is available directly from the web interface.
Restricted access
By default the customization is behind a login.
Default login admin / webfactory
is defined in settings.rb
. Be sure to replace that with your own login before going to production.
To force logout go to.
/logout
Customization
The current page is called index
Change this page by opening the following url
/edit/index
View pre-generated version of this page on following url
/index
Render new version of this page on following url
/render/index
Create a new page mypage
by (1) opening the following url
/edit/mypage
And (2) include a template reference in the top of the new page.
But exclude any spaces within brackets. Spaces are added here just to avoid that the reference interpreted as a valid one.
{{ template:default }}
Reference other sections of a page (existing or non-existing) by inserting following markup within a page, but with spaces removed.
{{ section:route/section }}
Reference constant definitions (defined in config/constants.json
) by inserting following markup within a page, but with spaces removed.
{{ const:name }}
Change template by changing header parameter "default" to your custom template file located in templates/
.
{{ template:custom }}
Pages and sections
A page
is a markup file (markdown or html) with a template configuration in the top of the page. Note no speces are allowed within brackets.
{{ template:default }}
A page may include all the contents it needs directly in the page, but may also reference other markup parts called, sections.
A page and a section look the same and are edited and created the same way. The only difference is that a page must include a template reference (in the top) to make it complete as a page. A section must not include a template reference because it is already part of a page. A page cannot have multiple document roots.
Example page
Below a pre-defined page has been created as an example.
Link: apage
Other admistrative
Show a list of all pages and sections by opening the following url
/all
Render all pages by opening the following url
/render/all
Advanced
Custom parameters in sections
Often a section can be used for many pages with just minor modification.
To allow better reuse between sections and avoid duplication it is possible to add custom parameters in the section reference. For instance if you want a custom message in a subsection for difference pages you can supply the custom parameter as follows.
{{ section:route/asection, message="Kilroy was here!" }}
The dynamic parameters is accessed from the section the same way as constant.
{{ const:message }}
Multiple parameters are supplied separated by comma.
Custom parameters also override constant definitions. For instance the constant version
(=0.2) can be overridden in a subsection as follows.
{{ section:route/asection, message="Kilroy was here!", version="9.9" }}
Parameters are even allowed in templates. If you e.g. use a constant title
in the template it can overridded by supplying the custom title in the template reference.
{{ template:default, title="My custom title for a page" }}
Dynamic generators
If you need even more flexibility it is possible to use custom ruby code to generate content to be used on a page.
These generators works in a similar way as constants, except that custom ruby code generate the results.
The following function is supplied as default.
def date
Time.now.strftime("%F")
end
It is defined in dynamic.rb
in class Dynamic
. If you need other dynamic functions you can simply add them to the Dynamic
class.
The dynamic is accessed in the same way as a constant except it is called a dynamic
.
{{ dynamic:date }}
This "2022-06-26", is the result if you include a reference in a page.
Support other files
To handle common additional files like robots.txt
and sitemap.xml
general support for .xml
and .txt
files is included.
If you place one of these files in /pages
folder they will be copied to /public
folder when all pages are rendered (/render/all
). The files may include const
and dynamic
references just as regular pages.
For instance this pages site map is defined as follows.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://webfactory.lounge.se/index</loc>
<lastmod>2022-06-26</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://webfactory.lounge.se/apage</loc>
<lastmod>2022-06-26</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
Note the reference to one constant domain
and one dynamic date
.
These files are currently not editable via web ui.