google plugin: Use google.com to search the local site.
Google allows has a nice feature, sitesearch, that allows anyone to limit search results to a specific site. Obviously, this feature can be used to provide a search engine for the local ikiwiki site without the need to install any additional software. Just enable the 'google' plugin and make sure that --url uses the proper hostname. Thanks to Joey for helping to get the Perl implementation right.master
parent
61b37a3d73
commit
f9957d11ed
|
@ -0,0 +1,49 @@
|
|||
#!/usr/bin/perl
|
||||
package IkiWiki::Plugin::google;
|
||||
|
||||
use warnings;
|
||||
use strict;
|
||||
use IkiWiki 2.00;
|
||||
use URI;
|
||||
|
||||
sub import { #{{{
|
||||
hook(type => "getsetup", id => "google", call => \&getsetup);
|
||||
hook(type => "checkconfig", id => "google", call => \&checkconfig);
|
||||
hook(type => "pagetemplate", id => "google", call => \&pagetemplate);
|
||||
} # }}}
|
||||
|
||||
sub getsetup () { #{{{
|
||||
return
|
||||
plugin => {
|
||||
safe => 1,
|
||||
rebuild => 1,
|
||||
},
|
||||
} #}}}
|
||||
|
||||
sub checkconfig () { #{{{
|
||||
foreach my $required (qw(url)) {
|
||||
if (! length $config{$required}) {
|
||||
error(sprintf(gettext("Must specify %s when using the google search plugin"), $required));
|
||||
}
|
||||
}
|
||||
} #}}}
|
||||
|
||||
my $form;
|
||||
sub pagetemplate (@) { #{{{
|
||||
my %params=@_;
|
||||
my $page=$params{page};
|
||||
my $template=$params{template};
|
||||
|
||||
# Add search box to page header.
|
||||
if ($template->query(name => "searchform")) {
|
||||
if (! defined $form) {
|
||||
my $searchform = template("googleform.tmpl", blind_cache => 1);
|
||||
$searchform->param(sitefqdn => URI->new($config{url})->host);
|
||||
$form=$searchform->output;
|
||||
}
|
||||
|
||||
$template->param(searchform => $form);
|
||||
}
|
||||
} #}}}
|
||||
|
||||
1
|
|
@ -0,0 +1,6 @@
|
|||
<form method="get" action="http://www.google.com/search" id="searchform">
|
||||
<div>
|
||||
<input name="sitesearch" value="<TMPL_VAR SITEFQDN>" type="hidden">
|
||||
<input name="q" value="" id="searchbox" size="16" maxlength="255" type="text">
|
||||
</div>
|
||||
</form>
|
Loading…
Reference in New Issue