在smarty模板中替换php file_get_contents?

时间:2013-08-17 07:37:31

标签: php youtube-api smarty file-get-contents smarty2

我需要在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'];
}
}

我使用下面的代码在smarty模板中调用它:

{getTitle id=$videoId}

欢迎提出建议!

1 个答案:

答案 0 :(得分:3)

对于那些没有阅读上述评论的读者,我和OP都知道这不是你使用模板引擎的方式。他似乎有理由想要在模板中直接执行此操作而不是插件或提前编写代码。所以,请不要因为如何展示如何请我懈怠:)

以下是在Smarty中如何做到的。

{"http://youtube.com/get_video_info?video_id=`$videoId`"|file_get_contents|parse_str:$result}
{$result.title}

我在一次通话中完成了第一部分,但是如果你想要小心,你可以将它分成带有支票的多个通话。但是我在本地进行了测试,结果很好。