sidebar plugin optimisations

The pagetemplate hook may be called multiple times, for example when pages
are inlined into a page. Sidebars were being calculated each time that
happened, only to be thrown away when the final pagetemplate hook was
called. Avoid this unnecessary work.

Remove stored sidebar content on use to save some memory.
master
Joey Hess 2010-04-15 22:18:56 -04:00
parent 4efc897fdf
commit dd64c2a9c0
1 changed files with 4 additions and 5 deletions

View File

@ -60,7 +60,7 @@ my $oldcontent;
sub sidebar_content ($) {
my $page=shift;
return $pagesidebar{$page} if defined $pagesidebar{$page};
return delete $pagesidebar{$page} if defined $pagesidebar{$page};
return if ! exists $pagesidebar{$page} &&
defined $config{global_sidebars} && ! $config{global_sidebars};
@ -97,11 +97,10 @@ sub sidebar_content ($) {
sub pagetemplate (@) {
my %params=@_;
my $page=$params{page};
my $template=$params{template};
if ($template->query(name => "sidebar")) {
my $content=sidebar_content($page);
if ($params{destpage} eq $params{page} &&
$template->query(name => "sidebar")) {
my $content=sidebar_content($params{destpage});
if (defined $content && length $content) {
$template->param(sidebar => $content);
}