我需要在smarty tpl文件中使用PHP file_get_contents()
。我不能在PHP中使用它,也不能将它分配给smarty模板。因为URL是通过smarty模板文件内部的循环动态生成的。所以我使用smarty插件功能来完成这项任务。但我想知道是否有任何方法可以直接在模板文件中使用它,而不是从插件文件中解析它。
我已经附上了我用来实现这个功能的插件代码。请任何人让我知道如何直接在smarty tpl文件中使用它。
function smarty_function_getTitle($params)
{
if ($params['id']) {
$content = file_get_contents("http://youtube.com/get_video_info?video_id=".$params['id']);
parse_str($content, $ytarr);
return $ytarr['title'];
}
}
我用下面的代码称之为智能模板:
{getTitle id=$videoId}
欢迎提出建议!
对于那些没有阅读上面评论的读者,我和OP都知道这不是使用模板引擎的方式。他似乎有自己的理由想直接在模板中做这件事,而不是在代码中使用插件或提前完成。所以,请不要因为我演示了如何操作而责怪我:)
以下是如何在Smarty中做到这一点。
{"http://youtube.com/get_video_info?video_id=`$videoId`"|file_get_contents|parse_str:$result}
{$result.title}
我在一个电话中完成了第一部分,但如果你想小心,你可以用支票将其分成多个电话。但我在当地测试了一下,效果很好。