Reputation: 17638
PHP CODE:
function show_playlist_form($array)
{
global $cbvid;
assign('params',$array);
$playlists = $cbvid->action->get_channel_playlists($array);
assign('playlists',$playlists);
Template('blocks/playlist_form.html');
}
HTML CODE (SMARTY INSIDE):
<html><head></head>
<body>
{show_playlist_form}
</body>
</html>
This all can be found in clip-bucket video script. The html code calls the php function, where it shows playlist_form.html. However, I'm interested in adding an integer value in the smarty defined tag show_playlist_form so that it would pass it to the function in php show_playlist_form($array) and then the function would assign the integer into $array.
I tried, assuming I'm interested in passing the integer 1:
{show_playlist_form(1)}
Fatal error: Smarty error: [in /home/george/public_html/styles/george/layout/view_channel.html line 4]: syntax error: unrecognized tag: show_playlist_form(1) (Template_Compiler.class.php, line 447) in /home/george/public_html/includes/templatelib/Template.class.php on line 1095
{show_playlist_form array='1'}
The html code worked but it I got nothing (blank).
So, it didn't work, what can I do? I need to pass integer values to the function.
Upvotes: 3
Views: 3078
Reputation: 97688
What you are looking for here is to implement a "custom template function" which receives parameters.
As shown in the documentation on function plugins, the function you create will receive two parameters:
So for instance, if you define this:
function test_smarty_function($params, $smarty) {
return $params['some_parameter'], ' and ', $params['another_parameter'];
}
And register it with Smarty under the name test
like this:
$template->registerPlugin('function', 'test', 'test_smarty_function');
Then you could use it in your templates like this:
{test some_parameter=hello another_parameter=goodbye}
Which should output this:
hello and goodbye
In your case, you probably want something like this:
function show_playlist_form($params, $smarty) {
$playlist_id = $params['id'];
// do stuff...
}
and this:
{show_playlist_form id=42}
Upvotes: 5