(Smarty)函数preg_match或另一种最佳方式

时间:2014-12-11 18:01:25

标签: php preg-match smarty

创建解析名称的函数时,smarty的最佳方法是什么?

例如: 我有变量{$ attachment.filename}

如果文件名是.jpg | .jpeg | .gif | .png ---我的结果---(在灯箱中打开选项......否则无法在灯箱中打开......)

谢谢!

1 个答案:

答案 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中提供的值。