Small function to output a random number between two values.
You can do that by Smarty itself. This is possible because you can call PHP functions as if they were smarty modifiers. Parameter order is a little weird because the variable you want to modify actually becomes the first parameter to the PHP function. (that's why the 0 is the template 'variable' and the 100 is after the function rand):
{0|rand:100} // generates a number between 0 and 100
It seems that this does not work in earlier versions of Smarty. You can use this too
{$doesNotExist|rand:100} // generates a number between 0 and 100
(I didn't see this anywhere else so I thought I would make this function. But it's so simple that maybe it already exists somewhere else... Sorry in that case)
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
* Type: function
* Name: random
* Purpose: output a random number between $varIn and $varOut:
* {random in=$varIn out=$varOut}
* If you want to assign the random number to a variable
* instead of displaying it, you must write:
* {random in=$varIn out=$varOut assign=yourVar}
* Where yourVar can be anything. Then you'll get
* $yourVar equal to a random number between $varIn and $varOut.
* Author: Philippe Morange
* Modified: 25-03-2003
* -------------------------------------------------------------
*/
function smarty_function_random($params, &$smarty)
{
extract($params);
srand((double) microtime() * 1000000);
$random_number = rand($in, $out);
if (isset($assign)) {
$smarty->assign($assign, $random_number);
}
else {
return $random_number;
}
}
Back to SmartyPlugins.