This page describes the skin template files (.tmpl) that are used to create PmWiki skins, and how PmWiki uses them. As described in the skins page, a skin is a collection of files that specifies the layout for PmWiki pages. Each skin must include a template file that provides the skeleton for displaying a PmWiki page.
PmWiki processes any skin.php file in the skin directory before loading any templates. If there is no skin.php file, or if the skin.php file doesn't load a template, then PmWiki falls back to looking
for a template with the same name of the skin, or a single .tmpl file if it exists.
In simpler setups (which is what the vast majority of skins have), the skin.php file is absent or makes no mention of the .tmpl file, and so PmWiki finds and loads the template itself. To exert greater control over the process, simply call LoadPageTemplate() inside the skin.php file, with the name of the .tmpl file to be loaded:
->LoadPageTemplate($pagename, "$SkinDir/xyz.tmpl");
For example, a skin might specify a special template to be used if the action is 'print':
->if ($GLOBALS['action'] == 'print')
-->LoadPageTemplate($pagename, "$SkinDir/print.tmpl");
When the action is something else, the default skin gets loaded instead.
A template file is basically an HTML file that also contains variable substitutions (indicated by '$') and special directives embedded in HTML comments. Two special directives are required in the template file. The directive <!--PageText-->
belongs to the <body> section of the HTML document, and tells PmWiki where the main content of each wiki page should be placed. The other required directive is <!--HTMLHeader-->
, which goes somewhere in the
section of the HTML document. There is also an optional When PmWiki displays a page, it replaces the directives and variable substitutions with the values appropriate to the current page. For example, the There is a long list of variables available for substitution in pages; some of the
$PageUrl the url of the current page $ScriptUrl the base url to the pmwiki.php script $Title the page's title (e.g., "`SkinTemplates") $Titlespaced the page's title with spaces (e.g., "Skin Templates") $Group the name of the current group (e.g., "`PmWiki") $FullName the page's full name (e.g., "`PmWiki.SkinTemplates") $LastModified the page's last modification time $PageLogoUrl the url of a site logo $WikiTitle the site's title $SkinDirUrl the url of the skin's folder This last variable, $SkinDirUrl, is particularly useful in templates as it allows the skin designer to refer to other files (such as images or style sheets) in the skin folder without having to know the exact url. The template is not limited to using the variables listed here; nearly any PHP global variable that begins with a capital letter can be used in a skin template. Page variables can also be used in templates. Skin directivesBesides the required : : :If multiple pages are listed in the directive, then only the first available page is used. Thus : : : Page sectionsA template file can designate "sections" that are included or excluded from the output based on page directives or other criteria. A section always begins with <!--PageHeaderFmt--> (:noheader:) <!--PageFooterFmt--> (:nofooter:) <!--PageTitleFmt--> (:notitle:) <!--PageLeftFmt--> (:noleft:) <!--PageRightFmt--> (:noright:) <!--PageActionFmt--> (:noaction:) Skin designers can define custom sections and markups, but currently all section names in the template must begin with "Page" and end with "Fmt". As mentioned you also have to define the corresponding markup (for example in your config.php) like this: Markup('noxyz', 'directives', '/\\(:noxyz:\\)/ei', "SetTmplDisplay('PageXYZFmt',0)"); Internationalization (i18n)Skins can also be internationalized by using For example, the substitution %trail%<<|DocumentationIndex|>> Q: How do I customize the CSS styling of my PmWiki layout? A: See Skins for how to change the default PmWiki skin. See also Cookbook:Skins, where you will find pre-made templates you can use to customize the appearance of your site. You can also create a file called local.css in the pub/css/ directory and add CSS selectors there (this file gets automatically loaded if it exists). Or, styles can be added directly into a local customization file by using something like: -> Q: Where can the mentioned "translation table" be found for adding translated phrases? A: See Internationalizations.
|
---|