Random

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.