Running an invisible wiki engine
How to install and configure an invisible wiki engine to power your websiteWatch a video tutorial
Wiki engines are more than engines for wikis
A common misunderstanding about wiki engines is that they can only be used to run actual wikis (or web-based collaborative projects like, for example, Wikipedia). Wiki engines are, on the contrary, a simple and effective solution for maintaining and managing different kinds of non-wiki websites, without bothering with FTP connections.Two frequent arguments about the fact that wiki engines can only be used to maintain wikis are the following:
- anyone can edit the content of a wiki;
- wiki engines make sites look wikish;
Both arguments are false.
Regarding A), editing privileges in many wiki engines, including Wikka, can be set on a per-page basis through Access Control Lists. A wiki engine can thus easily restrict read-, comment- or write-access for specific pages to no user, a specific user or more users.
As for B) - one might argue - a site run by a wiki engine will probably look too "wikish" for one's (and one's users') taste, with a lot of links and features that usually are not expected on non-wiki sites. Wiki-related features typically include:
- recent changes links;
- login links;
- last edit information;
- last author information;
- history/revision links;
- comments;
To address this issue, I propose in this page a very simple solution.
An invisible wiki engine?
I use WikkaWiki as a backend for my personal website, so I can update the content with a simple double-click anytime I need to. I have configured my Wikka engine so that all wiki-related features are hidden to the user in graphical browsers. No code modification is required, only the setting of specific options in the configuration file and some minor changes in the stylesheet.
The configuration
If you want to use Wikka as an invisible backend to power a non-wiki site, here's what you need to do.First, you will need to restrict write access to the administrator (i.e., yourself), so as to prevent other users from modifying the content of your site. Open wikka.config.php and set the ACL options as follows:
"default_write_acl" => "!*",
"default_read_acl" => "*",
"default_comment_acl" => "!*",
"default_read_acl" => "*",
"default_comment_acl" => "!*",
Second, hide comments by setting the relevant configuration option to '1':
"hide_comments" => "1",
- append /delete to the page URL to remove the page;
- append /acls to the page URL (or click on Edit ACLs) to set the access options for this page as: !* - !* - !*;
Reduce the navigation links to the minimum necessary for instance:
In Wikka 1.1.x you can modify the values of navigation_links and loggedin_navigation_links in the config file:
"navigation_links" => "[[UserSettings | login]]",
Since Wikka 1.2 you can control the content displayed in navigation bars and menus via menu template files.
You might also want to hide the login page. To do this just mask or delete the default UserSettings page, after creating a new login page (a page with the {{usersettings}} action) not linked from any other page of your website.
Modify the stylesheet to hide wiki-related page elements. In order to do so, open .css/wikka.css. First make a backup of this file so you can restore the original stylesheet if needed. Then, look for all the components of the page that you want to be invisible to the user and mask them. This can be easily done by adding to the relevant CSS selector a display:none attribute. In my stylesheet, I mask the following elements:
#header h2 {display:none;}
#footer {display: none;}
#comments {display: none;}
#footer {display: none;}
#comments {display: none;}
Keep in mind that the hidden elements (including links) are still visible in the page source so they will be crawled and cached by search engines. To prevent this, change the ACL settings or remove these pages as suggested at point 3).
- Also keep in mind that some browsers don't implement stylesheets at all, including text browsers like Lynx, but also some graphical browsers. If stylesheets aren't implemented, all text will appear. A few approaches are possible to have less appear:
- use the {{nocomments}} action to completely suppress the comments area
- use a stylesheet (rather than the Formatter) to generate "link tails" (or prefixes): no stylesheet, no tails
- edit header.php and footer.php to remove unwanted elements
That's all folks. Comments and suggestions are welcome
-- DarTar
CategoryEN