patch for multiple sidebars

master
http://privat.myopenid.com/ 2010-02-27 15:12:39 +00:00 committed by Joey Hess
parent 7bf28731d7
commit 100636afa2
1 changed files with 52 additions and 0 deletions

View File

@ -13,5 +13,57 @@ those contents instead.
> In mine I just copied sidebar out and made some extra "sidebars", but they go elsewhere. Ugly hack, but it works. --[[simonraven]]
>> Here a simple [[patch]] for multiple sidebars. Not too fancy but better than having multiple copies of the sidebar plugin. --[[jeanprivat]]
<pre>
--- /usr/share/perl5/IkiWiki/Plugin/sidebar.pm 2010-02-11 22:53:17.000000000 -0500
+++ plugins/IkiWiki/Plugin/sidebar.pm 2010-02-27 09:54:12.524412391 -0500
@@ -19,12 +19,20 @@
safe => 1,
rebuild => 1,
},
+ active_sidebars => {
+ type => "string",
+ example => qw(sidebar banner footer),
+ description => "Which sidebars must be activated and processed.",
+ safe => 1,
+ rebuild => 1
+ },
}
-sub sidebar_content ($) {
+sub sidebar_content ($$) {
my $page=shift;
+ my $sidebar=shift;
- my $sidebar_page=bestlink($page, "sidebar") || return;
+ my $sidebar_page=bestlink($page, $sidebar) || return;
my $sidebar_file=$pagesources{$sidebar_page} || return;
my $sidebar_type=pagetype($sidebar_file);
@@ -49,11 +57,17 @@
my $page=$params{page};
my $template=$params{template};
-
- if ($template->query(name => "sidebar")) {
- my $content=sidebar_content($page);
- if (defined $content && length $content) {
- $template->param(sidebar => $content);
+
+ my @sidebars;
+ if (defined $config{active_sidebars} && length $config{active_sidebars}) { @sidebars = @{$config{active_sidebars}}; }
+ else { @sidebars = qw(sidebar); }
+
+ foreach my $sidebar (@sidebars) {
+ if ($template->query(name => $sidebar)) {
+ my $content=sidebar_content($page, $sidebar);
+ if (defined $content && length $content) {
+ $template->param($sidebar => $content);
+ }
}
}
}
</pre>
[[!tag wishlist]]