[pmwiki-users] automatic Trail with random back & next

Hans design5 at softflow.co.uk
Tue Jul 22 04:03:30 CDT 2008


Monday, July 21, 2008, 10:51:39 PM, Stéphane Heckel wrote:

> tested with beta-65, markup in both page's body and includes, ...
> it works ok for me.

excellent!

Here is another expression, which is more general.
It selects at random one item from a list of items supplied,
by default from a CSV list, but the item separator can be choosen.
Combine this with (plist) or (pagelist) markuop expression and you
can construct random links like in the (rndpage) expression.
(plist0 lets you use nice exclusive and inclusive wildcard pagename
patterns.
Or you can use it for entirely different things, where you wish to
have  arandom pick of something.
Again this expression function keeps track of items already choosen
before, so it will not display doubles.

//add markup expression {(random item1,item2,item3,item4 sep=SEPARATOR)}
$MarkupExpr['random'] = 'MXRandomItem($pagename, $args[0],$argp)';
function MXRandomItem($pagename, $list, $args) {
        global $RandomItemsUsed; echo $args['sep'];
        $sep = (isset($args['sep'])) ? $args['sep'] : ',';
        $sep = str_replace('\n',"\n",$sep);
        $list = explode($sep,$list);
        foreach($list as $i => $item)
                if (in_array($item,(array)$RandomItemsUsed) || $item=='') 
                        unset($list[$i]);
        echo "<pre>\$list "; print_r($list); echo "</pre>";             
        sort($list);
        
        $i = rand(0,count($list)-1);
        $RandomItemsUsed[] = $list[$i];
        return $list[$i];       
}

a link markup may look something like this:

[[{(random (plist -Recent* -Group*))}|+]]



  ~Hans




More information about the pmwiki-users mailing list