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}

最初の部分はすべて 1 回の呼び出しで行いましたが、注意が必要な場合は、チェックを付けて複数の呼び出しに分割できます。しかし、これをローカルでテストしたところ、問題なく動作しました。

于 2013-08-17T08:42:21.727 に答える