allow sidebar directive to enable use of sidebar page

This way, the example blog always has a sidebar on the index page,
but not the overhead of sidebars on all the other pages. And if a
user wants to, they can enable global_sidebars to switch to sidebars on
every page.
master
Joey Hess 2010-04-15 17:38:13 -04:00
parent d7c164dbf2
commit d63e043f0a
4 changed files with 34 additions and 24 deletions

View File

@ -23,7 +23,7 @@ sub getsetup () {
global_sidebars => {
type => "boolean",
examples => 1,
description => "show sidebar page on all pages?"
description => "show sidebar page on all pages?",
safe => 1,
rebuild => 1,
},
@ -36,20 +36,22 @@ sub preprocess (@) {
my $content=shift;
shift;
if (! defined $content) {
error(gettext("sidebar content not specified"));
}
my $page=$params{page};
return "" unless $page eq $params{destpage};
my $file = $pagesources{$page};
my $type = pagetype($file);
if (! defined $content) {
$pagesidebar{$page}=undef;
}
else {
my $file = $pagesources{$page};
my $type = pagetype($file);
$pagesidebar{$page}=
IkiWiki::htmlize($page, $page, $type,
IkiWiki::linkify($page, $page,
IkiWiki::preprocess($page, $page,
IkiWiki::filter($page, $page, $content))));
$pagesidebar{$page}=
IkiWiki::htmlize($page, $page, $type,
IkiWiki::linkify($page, $page,
IkiWiki::preprocess($page, $page,
IkiWiki::filter($page, $page, $content))));
}
return "";
}
@ -60,9 +62,10 @@ my $oldcontent;
sub sidebar_content ($) {
my $page=shift;
return $pagesidebar{$page} if exists $pagesidebar{$page};
return $pagesidebar{$page} if defined $pagesidebar{$page};
return if defined $config{global_sidebars} && !$config{global_sidebars};
return if ! exists $pagesidebar{$page} &&
defined $config{global_sidebars} && ! $config{global_sidebars};
my $sidebar_page=bestlink($page, "sidebar") || return;
my $sidebar_file=$pagesources{$sidebar_page} || return;

View File

@ -1,14 +1,6 @@
[[!inline pages="./posts/* and !*/Discussion" show="10"
actions=yes rootpage="posts"]]
[[!sidebar """
[[Tags]]: [[!pagestats style="list" pages="./tags/*" among="./posts/*"]]
[[Recent Comments|comments]]
[[Archives]]
[[!calendar pages="./posts/* and !*/Discussion"]]
"""]]
[[!sidebar]]
This blog is powered by [ikiwiki](http://ikiwiki.info).

View File

@ -0,0 +1,9 @@
[[Tags]]: [[!pagestats style="list" pages="./tags/*" among="./posts/*"]]
[[Recent Comments|comments]]
[[Archives]]
[[!if "enabled(calendar)" then="""
[[!calendar pages="./posts/* and !*/Discussion"]]
"""]]

View File

@ -1,8 +1,12 @@
The `sidebar` directive is supplied by the [[!iki plugins/sidebar desc=sidebar]] plugin.
This directive specifies a custom sidebar to display on the page,
This directive can specify a custom sidebar to display on the page,
overriding any sidebar that is displayed globally.
If no custom sidebar content is specified, it forces the sidebar page to
be used as the sidebar, even if the `global_sidebars` setting has been
used to disable use of the sidebar page by default.
## examples
\[[!sidebar """
@ -11,4 +15,6 @@ overriding any sidebar that is displayed globally.
\[[!calendar pages="posts/*"]]
"""]]
\[[!sidebar]]
[[!meta robots="noindex, follow"]]