[pmwiki-users] Pagelists of multiple linkbacks
Hans
design5 at softflow.co.uk
Mon Aug 11 09:55:30 CDT 2008
Peter just mailed me and suggested that my markup expression solution
should output a comma-separated list of page names, which can be
given as value to a pagelist name= parameter, and any custom
formatting can be applied.
I like this idea of separating formatting (and ordering) from
creating a unified pagelist, so here is another modified markup
expression for this, which I may well add to the PowerTools script:
# return united pagelist formatted as simple list
# from csv-pagelists supplied as arguments
$MarkupExpr['unilist'] = 'MxUniList($pagename, $args, $argp)';
function MxUniList($pagename, $args, $opt) {
$a = array();
foreach($args as $v) {
$vv = explode(',',$v);
$a = array_merge($a, $vv);
}
$a = array_unique($a);
sort($a);
$sep = (isset($opt['sep'])) ? $opt['sep'] : ',';
$sep = str_replace('\n',"\n",$sep);
foreach ($a as $i => $p)
$a[$i] = @$opt['pre'].$p.@$opt['suf'];
return implode($sep,$a);
}
Then one can use in a page this markup (on one line!) for instance:
(:pagelist fmt=#title name=(unilist (pagelist link=Category.A)
(pagelist link=Category.B)):)
The above 'unilist' markup expression allows for setting of an item
separator with the sep= parameter, and setting of an item prefix with
pre= parameter, and an item suffix with suf= parameter. This makes it
possible to specify simple formatting, for instance a list by title
could be created with (on one line):
{(unilist (pagelist link=Category.A) (pagelist link=Category.B)
sep=\n pre=*[[ suf=|+]] )}
i.e. each page name of the list is wrapped like *[[FullPageName|+]]
and a newline character is used as separator to create each list item
on its own line.
~Hans
More information about the pmwiki-users
mailing list