Moved the postscan hook to run on the raw html of a page, before 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.

master
Joey Hess 2009-11-08 13:48:07 -05:00
parent 19ff6180a8
commit 66b46576ec
4 changed files with 32 additions and 15 deletions

View File

@ -61,6 +61,10 @@ sub backlinks ($) {
sub genpage ($$) {
my $page=shift;
my $content=shift;
run_hooks(postscan => sub {
shift->(page => $page, content => $content);
});
my $templatefile;
run_hooks(templatefile => sub {
@ -130,10 +134,6 @@ sub genpage ($$) {
$content=$template->output;
run_hooks(postscan => sub {
shift->(page => $page, content => $content);
});
run_hooks(format => sub {
$content=shift->(
page => $page,

4
debian/changelog vendored
View File

@ -4,6 +4,10 @@ ikiwiki (3.20091032) UNRELEASED; urgency=low
references.
* underlay: Avoid crashing if lists of underlays (or template
directories) are not configured.
* Moved the postscan hook to run on the raw html of a page, before
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.
-- Joey Hess <joeyh@debian.org> Fri, 06 Nov 2009 12:04:29 -0500

View File

@ -7,3 +7,16 @@ A way to name some CSS ids that should be removed in search results within the i
http://leaf.dragonflybsd.org/mailarchive/users/2009-11/msg00077.html
(bin attachment on that page is actually a .diff.)
> So I was looking at this and I relized that while the search plugin used
> to use the format hook, and so there was no way to avoid it seeing all
> the gunk around the page body, it was changed a while ago for different
> reasons to use its own hook, postscan. So there's really no reason not
> to move postscan so it runs before said gunk is added to the page.
> (Aside from a small risk of breaking other third-party plugins that
> somehow use postscan.)
>
> I've implemented that in git, and it drops the navigation elements nicely.
> It's perhaps less general than allowing specific divs to be skipped from
> search, but it seems good enough. Please thank the dragonfly guys for their
> work on this. [[done]] --[[Joey]]

View File

@ -201,6 +201,17 @@ like `Makefile` that have no extension.
If `hook` is passed an optional "longname" parameter, this value is used
when prompting a user to choose a page type on the edit page form.
### postscan
hook(type => "postscan", id => "foo", call => \&postscan);
This hook is called once the page has been converted to html (but before
the generated html is put in a template). The most common use is to
update search indexes. Added in ikiwiki 2.54.
The function is passed named parameters "page" and "content". Its return
value is ignored.
### pagetemplate
hook(type => "pagetemplate", id => "foo", call => \&pagetemplate);
@ -237,17 +248,6 @@ modify the body of a page after it has been fully converted to html.
The function is passed named parameters: "page", "destpage", and "content",
and should return the sanitized content.
### postscan
hook(type => "postscan", id => "foo", call => \&postscan);
This hook is called once the full page body is available (but before the
format hook). The most common use is to update search indexes. Added in
ikiwiki 2.54.
The function is passed named parameters "page" and "content". Its return
value is ignored.
### format
hook(type => "format", id => "foo", call => \&format);