diff --git a/IkiWiki/Plugin/localstyle.pm b/IkiWiki/Plugin/localstyle.pm new file mode 100644 index 000000000..111f4dc30 --- /dev/null +++ b/IkiWiki/Plugin/localstyle.pm @@ -0,0 +1,35 @@ +#!/usr/bin/perl + +package IkiWiki::Plugin::localstyle; + +use warnings; +use strict; +use IkiWiki 3.00; + +sub import { + hook(type => "getsetup", id => "localstyle", call => \&getsetup); + hook(type => "pagetemplate", id => "localstyle", call => \&pagetemplate); +} + +sub getsetup () { + return + plugin => { + safe => 1, + rebuild => 1, + }, +} + +sub pagetemplate (@) { + my %params=@_; + + my $template=$params{template}; + + if ($template->query(name => "local_css")) { + my $best=bestlink($params{page}, 'local.css'); + if ($best) { + $template->param(local_css => $best); + } + } +} + +1 diff --git a/debian/changelog b/debian/changelog index 6a5ae30ab..4ab63f175 100644 --- a/debian/changelog +++ b/debian/changelog @@ -8,6 +8,8 @@ ikiwiki (3.20091032) UNRELEASED; urgency=low the template is filled out. This improves the search plugin's indexing, since it will not include navigational elements from the page template or sidebar. + * localstyle: New plugin, allows overrding the toplevel local.css + with one that is closer to a page. -- Joey Hess Fri, 06 Nov 2009 12:04:29 -0500 diff --git a/doc/css.mdwn b/doc/css.mdwn index 20790b3d1..29a335596 100644 --- a/doc/css.mdwn +++ b/doc/css.mdwn @@ -16,3 +16,6 @@ files. The [[plugins/meta]] plugin can be used to add additional style sheets to a page. + +The [[plugins/localstyle]] plugin can be used to override the toplevel +[[local.css]] for a whole section of the wiki. diff --git a/doc/plugins/localstyle.mdwn b/doc/plugins/localstyle.mdwn new file mode 100644 index 000000000..70a909d68 --- /dev/null +++ b/doc/plugins/localstyle.mdwn @@ -0,0 +1,12 @@ +[[!template id=plugin name=localstyle author="[[Joey]]"]] +[[!tag type/chrome]] + +This plugin allows styling different sections of a wiki using different +versions of the local.css [[CSS]] file. Normally this file is read from the +top level of the wiki, but with this plugin enabled, standard +[[ikiwiki/subpage/LinkingRules]] are used to find the closest local.css +file to each page. + +So, for example, to use different styling for page `foo`, as well as all +of its [[SubPages|ikiwiki/subpage]], such as `foo/bar`, create a +`foo/local.css`. diff --git a/templates/page.tmpl b/templates/page.tmpl index e71ba316d..0e73463ec 100644 --- a/templates/page.tmpl +++ b/templates/page.tmpl @@ -7,8 +7,13 @@ + + + + +