aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@gnu.kitenet.net>2009-11-08 13:48:07 -0500
committerJoey Hess <joey@gnu.kitenet.net>2009-11-08 13:48:07 -0500
commit66b46576ec097b9f10b45d4b1de18bb214cd5bd5 (patch)
tree9cda888650586e576da95dd5eaa28bb1ec80991d
parent19ff6180a8bbb2e5441fe177a934e146d129f1c7 (diff)
downloadikiwiki-66b46576ec097b9f10b45d4b1de18bb214cd5bd5.tar
ikiwiki-66b46576ec097b9f10b45d4b1de18bb214cd5bd5.tar.gz
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.
-rw-r--r--IkiWiki/Render.pm8
-rw-r--r--debian/changelog4
-rw-r--r--doc/bugs/Search_summary_includes_text_from_navigational_elements.mdwn13
-rw-r--r--doc/plugins/write.mdwn22
4 files changed, 32 insertions, 15 deletions
diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm
index 0889fed62..ab3a71671 100644
--- a/IkiWiki/Render.pm
+++ b/IkiWiki/Render.pm
@@ -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,
diff --git a/debian/changelog b/debian/changelog
index 0026d9ddc..6a5ae30ab 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -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
diff --git a/doc/bugs/Search_summary_includes_text_from_navigational_elements.mdwn b/doc/bugs/Search_summary_includes_text_from_navigational_elements.mdwn
index 874b9ffeb..b774c4531 100644
--- a/doc/bugs/Search_summary_includes_text_from_navigational_elements.mdwn
+++ b/doc/bugs/Search_summary_includes_text_from_navigational_elements.mdwn
@@ -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]]
diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn
index c72418c3c..2f179d46f 100644
--- a/doc/plugins/write.mdwn
+++ b/doc/plugins/write.mdwn
@@ -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);