As described in the LayoutBasics page, HTML based templates can be used to customize the layout and appearance of Wiki pages. Template files can include links to external stylesheets (.css files). This page explains how template files are processed and how CSS files are included.
HTML comments can be included in templates, for example: <!-- this is a comment -->. Some comments work as directives that have special significance. There are no spaces between the comment delimeters and the keywords; that is,
<!--PageText--> is valid, but
<!-- PageText --> is not. Available directives and variables are:
(Note: this is a first attempt at describing CSS within PmWiki - still needs work!)
CSS rules can come from any of the following sources:
1. CSS rules in the
$HTMLStylesFmtarray (modules and cookbook recipes) 2. <link> and <style> tags placed in
$HTMLHeaderFmtby site/page/group config.php entries and cookbook recipes 3. <link> and <style> tags placed in
$HTMLHeaderFmtby skin customizations 4. pub/css/local.css 5. pub/css/$Group.css 6. pub/css/$Group.$Name.css 7. <link> and <style> tags specified in the skin's .tmpl file
By default, items 1-6 above occur in the order given above, and are placed in the output at the point where <!--HeaderText--> appears in the .tmpl file. For item 7, the order (and thus priority) of <link> and <style> tags in the .tmpl file relative to 1-6 depends on where the skin author places them relative to <!--HeaderText-->.
For any CSS rules that have the same weight (i.e., importance and specificity), the one that occurs latest in the HTML output always wins. So, for example, if a skin template says
<link rel='stylesheet' type='text/css' href='$SkinDirUrl/myskin.css' /> <!--HeaderText-->
then the rules specified in 1-6 above will override any equivalent-weight rules from myskin.css. Thus, an administrator could use pub/css/local.css to override any of the defaults, whether they come from PmWiki, a cookbook script, or a skin. However, if the tags are in reverse sequence
<!--HeaderText--> <link rel='stylesheet' type='text/css' href='$SkinDirUrl/myskin.css' />
then any rules given in the myskin.css stylesheet will override any equivalent-weight rules from 1-6 above. And, of course, the .tmpl file can sandwich stylesheets around <!--HeaderText-->:
<link rel='stylesheet' type='text/css' href='$SkinDirUrl/sheet-1.css' /> <!--HeaderText--> <link rel='stylesheet' type='text/css' href='$SkinDirUrl/sheet-2.css' />
In this case, the administrator can easily override the settings in sheet-1.css via the mechanisms listed in 1-6 above, and sheet-2.css can override the administrator's settings.
The above glosses over a few details -- such as the fact that those
rare entries to
$HTMLHeaderFmt by markup and action handlers will
typically show up after item 6, and that it's possible for a local
customization (or skin or cookbook script) to completely change
the sequence to be something else, but this is how things "normally