[pmwiki-users] Random PTVs set with {(randk)} do not retain set values

Petko Yotov 5ko at 5ko.fr
Tue Dec 16 16:44:07 CST 2014

On 2014-12-14 01:20, kirpi at kirpi.it wrote:
> If I set a PTV to a random value with {(randk)}[1], say
>       Random_string: {(randk 7)}
> I then would like that specific PTV to retain its value.
> Instead,
>        {$:Random_string}
> gets every time a new random value.
> I am perhaps just misunderstanding the way PTVs are working;

When you write into a page "{$:Random_string}", it will be replaced with 
the wikitext content after the "Random_string:" definition, and 
evaluated later. To PmWiki, it is the same if you paste more than once 
"{$:Random_string}" or "{(randk 7)}". So the "{(randk 7)}" expression 
will be evaluated every time.

> nonetheless I am trying to find a way to "freeze" PTV random values
> once they are set, in order to use them in pages and formulas.

This can be done with a custom page variable defined in config.php:

   $FmtPV['$Randk7'] = 'randomkeys(7)';  # evaluated every time -OR-
   $FmtPV['$Randk7'] = '"'. randomkeys(7) . '"'; # evaluated once and 
freezed until the page is reloaded

Then in the wiki page use {$Randk7}.

(this uses the function suggested in the MarkupExpressionSamples page)

This is obviously not very handy if you need to have many different such 
variables of different length in the pages. Do you need many lengths?


More information about the pmwiki-users mailing list