meta: Gather permalink info on scan pass so it is available to inline when using a template that does not include page content.

master
Joey Hess 2009-10-21 16:42:25 -04:00
parent 7ae0f754f3
commit b907108271
3 changed files with 23 additions and 2 deletions

View File

@ -121,6 +121,10 @@ sub preprocess (@) {
$pagestate{$page}{meta}{authorurl}=$value if safeurl($value);
# fallthrough
}
elsif ($key eq 'permalink') {
$pagestate{$page}{meta}{permalink}=$value if safeurl($value);
# fallthrough
}
elsif ($key eq 'date') {
eval q{use Date::Parse};
if (! $@) {
@ -141,10 +145,9 @@ sub preprocess (@) {
return;
}
# Metadata collection that happens only during preprocessing pass.
# Metadata handling that happens only during preprocessing pass.
if ($key eq 'permalink') {
if (safeurl($value)) {
$pagestate{$page}{meta}{permalink}=$value;
push @{$metaheaders{$page}}, scrub('<link rel="bookmark" href="'.encode_entities($value).'" />', $destpage);
}
}

2
debian/changelog vendored
View File

@ -6,6 +6,8 @@ ikiwiki (3.20091018) UNRELEASED; urgency=low
* Fix a bug introduced in the last version that caused ikiwiki
to skip all files if a sourcedir of "./" was specified.
* Support CFLAGS when building wrapper.
* meta: Gather permalink info on scan pass so it is available
to inline when using a template that does not include page content.
-- Joey Hess <joeyh@debian.org> Sun, 18 Oct 2009 13:44:09 -0400

View File

@ -7,3 +7,19 @@ with sometemplate being
> `<p><a href="<TMPL_VAR PERMALINK>"><TMPL_VAR TITLE></a> (<TMPL_VAR CTIME>)</p>`
produced output that links nowhere (`<a href="">`) while the other variables do fine. This problem does not occur in 3.1415926.
> This must be caused by an optimisation that avoids reading the page
> content when using a template that does not use CONTENT.
>
> I guess that it needs to instead check all the variables the template
> uses, and read content if PERMALINK, or probably any other unknown
> variable is used. Unfortunatly, that will lose the optimisation
> for the archivepage template as well -- it also uses PERMALINK.
>
> So, revert the optimisation? Or, make meta gather the permalink
> data on scan? That seems doable, but is not a general fix for
> other stuff that might be a) used in a template and b) gathered
> at preprocess time.
>
> For now, I am going with the special case fix of fixing meta. I may need
> to go for a more general fix later. --[[Joey]] [[!tag done]]