1

我需要file_get_contents()在 smarty tpl 文件中使用 PHP。我不能在 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}

欢迎提出建议!

4

1 回答 1

5

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

以下是您在 Smarty 中的操作方法。

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

我在一个电话中完成了第一部分,但如果您想小心,您可以将其拆分为多个电话并进行检查。但是我在本地对此进行了测试,并且效果很好。

于 2013-08-17T08:42:21.727 回答