创建解析名称的函数时,smarty的最佳方法是什么?
例如: 我有变量{$ attachment.filename}
如果文件名是.jpg | .jpeg | .gif | .png ---我的结果---(在灯箱中打开选项......否则无法在灯箱中打开......)
谢谢!
答案 0 :(得分:2)
在PHP中进行解析并在Smarty变量中设置标志。在模板中检查标志并显示您需要的内容。不要在模板中嵌入逻辑。
如果你真的需要在许多模板中使用这个功能,你可以写一个适合你需要的Smarty插件。
有关Smarty plugins的文档包含可以激发您灵感的示例。
例如:
// Define the function that implements the plugin
function my_special_img($params, Smarty_Internal_Template $template)
{
$src = $params['src'];
// Based on $src decide here if you want lightbox or not
$lightbox = TRUE; // or FALSE
// Generate the <img> element
// Get information from $params, put default values, do whatever you want
$output = implode(' ', array( // build the string from pieces
'<img',
'src="{$src}"',
'width="{$params['width']}"',
'height="{$params['height']"',
'alt="{$params['alt']}"',
'class="{$params['class']}"',
($lightbox ? 'rel="lightbox"' : ''),
'/>'
));
// Smarty will replace the function call in the template with the value it returns
return $output;
}
// Register the plugin in Smarty
$smarty->registerPlugin('function', 'image', 'my_special_img');
在模板中,替换
<img src="filename.jpg" width="40" alt="bla-bla" etc>
与
{image src="filename.jpg" width="40" alt="bla-bla" etc}
这就是全部。在插件的代码中表达您的创造力,但保持简单并仅使用$params
中提供的值。