diff --git a/IkiWiki/Plugin/pagestats.pm b/IkiWiki/Plugin/pagestats.pm
index 460a5969a..ac0a463e3 100644
--- a/IkiWiki/Plugin/pagestats.pm
+++ b/IkiWiki/Plugin/pagestats.pm
@@ -31,6 +31,19 @@ sub getsetup () {
},
}
+sub linktext ($%) {
+ # Return the text of the link to a tag, depending on option linktext.
+ my ($page, %params) = @_;
+ if (exists $params{show} &&
+ exists $pagestate{$page} &&
+ exists $pagestate{$page}{meta}{$params{show}}) {
+ return $pagestate{$page}{meta}{$params{show}};
+ }
+ else {
+ return undef;
+ }
+}
+
sub preprocess (@) {
my %params=@_;
$params{pages}="*" unless defined $params{pages};
@@ -84,7 +97,7 @@ sub preprocess (@) {
return "
\n".
join("\n", map {
"".
- htmllink($params{page}, $params{destpage}, $_, noimageinline => 1).
+ htmllink($params{page}, $params{destpage}, $_, noimageinline => 1, linktext => linktext($_, %params)).
" | ".$counts{$_}." |
"
}
sort { $counts{$b} <=> $counts{$a} } keys %counts).
@@ -107,7 +120,7 @@ sub preprocess (@) {
$res.="" if $style eq 'list';
$res .= "".
- htmllink($params{page}, $params{destpage}, $page).
+ htmllink($params{page}, $params{destpage}, $page, linktext => linktext($page, %params)).
"\n";
$res.="" if $style eq 'list';
diff --git a/doc/ikiwiki/directive/pagestats.mdwn b/doc/ikiwiki/directive/pagestats.mdwn
index 8d2be0946..ab8397366 100644
--- a/doc/ikiwiki/directive/pagestats.mdwn
+++ b/doc/ikiwiki/directive/pagestats.mdwn
@@ -40,4 +40,10 @@ that name still works, if its value is numeric.
The optional `class` parameter can be used to control the class
of the generated tag cloud `div` or page stats `table`.
+By default, the names of pages are shown. The `show` parameter
+can be used (with a non-numeric value) to show the titles or descriptions
+of pages instead (as set by the [[meta]] directive). For example:
+
+ \[[!pagestats pages="tags/*" show="title"]]
+
[[!meta robots="noindex, follow"]]