parent
c8330da6c0
commit
e51089e11f
27
IkiWiki.pm
27
IkiWiki.pm
|
@ -807,6 +807,7 @@ sub will_render ($$;$) { #{{{
|
|||
sub bestlink ($$) { #{{{
|
||||
my $page=shift;
|
||||
my $link=shift;
|
||||
my $res=undef;
|
||||
|
||||
my $cwd=$page;
|
||||
if ($link=~s/^\/+//) {
|
||||
|
@ -821,25 +822,35 @@ sub bestlink ($$) { #{{{
|
|||
$l.=$link;
|
||||
|
||||
if (exists $links{$l}) {
|
||||
return $l;
|
||||
$res=$l;
|
||||
}
|
||||
elsif (exists $pagecase{lc $l}) {
|
||||
return $pagecase{lc $l};
|
||||
$res=$pagecase{lc $l};
|
||||
}
|
||||
} while $cwd=~s{/?[^/]+$}{};
|
||||
} while ($cwd=~s{/?[^/]+$}{} && ! defined $res);
|
||||
|
||||
if (length $config{userdir}) {
|
||||
if (! defined $res && length $config{userdir}) {
|
||||
my $l = "$config{userdir}/".lc($link);
|
||||
if (exists $links{$l}) {
|
||||
return $l;
|
||||
$res=$l;
|
||||
}
|
||||
elsif (exists $pagecase{lc $l}) {
|
||||
return $pagecase{lc $l};
|
||||
$res=$pagecase{lc $l};
|
||||
}
|
||||
}
|
||||
|
||||
#print STDERR "warning: page $page, broken link: $link\n";
|
||||
return "";
|
||||
if (defined $res) {
|
||||
run_hooks(tweakbestlink => sub {
|
||||
$res=shift->(
|
||||
page => $page,
|
||||
link => $res);
|
||||
});
|
||||
return $res;
|
||||
}
|
||||
else {
|
||||
#print STDERR "warning: page $page, broken link: $link\n";
|
||||
return "";
|
||||
}
|
||||
} #}}}
|
||||
|
||||
sub isinlinableimage ($) { #{{{
|
||||
|
|
|
@ -447,6 +447,17 @@ ikiwiki; it is run just after ikiwiki has removed the trailing
|
|||
|
||||
It should return the modified url.
|
||||
|
||||
### tweakbestlink
|
||||
|
||||
hook(type => "tweakbestlink", id => "foo", call => \&tweakbestlink);
|
||||
|
||||
This hook can be used to modify the page returned by `bestlink`. It is
|
||||
passed named parameters `page` and `link`. These are, respectively,
|
||||
the page where the link will appear and the link ikiwiki would choose
|
||||
as the best one, if no `tweakbestlink` hook was in effect.
|
||||
|
||||
It should return the modified link.
|
||||
|
||||
## Plugin interface
|
||||
|
||||
To import the ikiwiki plugin interface:
|
||||
|
|
Loading…
Reference in New Issue