Compatible with DokuWiki
Similar to loadskin, multitemplate_styleman
This plugin helps developing and managing templates. It does not add any functioanlity by its own.
This is a beta release. The functions included or their use might be a security risk
you can install the plugin using the Plugin Manager using above download url or download a release from my repo: http://m3.notomorrow.de/public/repos/
or checkout the source on github:
git clone git://github.com/samfisch/dokuwiki-plugin-templateconfhelper.git templateconfhelper
An example template making use of css iheritance could look like this:
[stylesheets] layout.css = screen design.css = screen style.css = screen example.css = screen media.css = screen _mediaoptions.css = screen _admin.css = screen _linkwiz.css = screen _subscription.css = screen rtl.css = rtl print.css = print [replacements] ; main text color __text__ = "#F439CB"
body .dokuwiki { font-size: 0.7em !important; }
changes template based on users Selection via GET and saves it in the Session.
uses FETCH_MEDIA_STATUS event to hook into fetch.php. This allows to have template files outside of webroot.
a nginx rewrite rule to fix path used in templates
rewrite ^/lib/tpl/((.*)/)?images/(.*) /lib/exe/fetch.php?mode=styleimg&media=$3&template=$2 last;
or with nicer path
rewrite ^/_img/((.*)/)?(.*) /lib/exe/fetch.php?mode=styleimg&media=$3&template=$2 last;
The custom css.php and the functions in inc/template.php use following config settings to look up templatefiles. Files that dont exist in the active template are choosen from the next template in this order:
For the main.php the default is hardcoded in dokuwiki. So for templates to overwrite the main.php they have to exist in the dokuwiki lib/tpl/ directory. Fallback is always lib/tpl/default/. This is a security feature as without a special template making use of eg the tpl_include function no php code from the following cascade path is interpreted. (I think)
The base_tpl can be configured using the DokuWiki configuration manager available in the admin menu.
base_tpl | The default template which is used if the file was not found in the page or user template |
|---|
Cascade Path is an extension to the cascade config values in dokuwiki init. It can be set in preload.php. The new template_path setting allows to read templates from pathes outside dokuwiki code. E.g. per domain in farming environments.
The plugin has a hardcoded cascade path wich is used if the $cascade_path['template_dir'] setting is empty as it is in a default install.
$config_cascade['template_dir'] = array( // used in confutils 'default' => array( dirname( DOKU_TPLINC ).'/' ), );
Example cascade path for inc/preload.php
$version = '/dokuwiki/' $farmdir = "$farmbasedir/domains/$animal/";
$config_cascade['template_dir'] = array( // used in templateconfig plugin
'default' => array( $farmbasedir.'/extension/tpl/', $farmbasedir.$version.'lib/tpl/' ),
'local' => array( $farmdir.'tpl/' ),
#'protected' => array( $farmbasedir.'/extension/tpl_protected/' ),
);
to allow animals to overwrite template php files a main.php like this can be used in the default_tpl or base_tpl in dokuwiki lib/tpl/ directory. It will check the cascade path for a main.php in the active template.
<?php tpl_include( 'main.php' );
This is a rather creative apporach to hook into css.php. The templateaction plugin class deffinition includes inc/preload.php. Here css.php calls are intercepted and the custom css.php from the plugins exe directory is loaded.
If the template_path cascade config has not been set. Defaults are made up for a standard dokuwiki setup.
include style.ini and css files based on inheritance. Makes use of default_tpl, base_tpl and getConfigPath( )