2

我知道我们应该避免在任何模板引擎中使用 {php} 标记,不过,让我们假设它是这种情况下的唯一方法。

考虑到这一点,我想请求一些帮助,以获取用于 php 消费的 smarty 字符串。

在这种情况下,我想在 srtstr php 函数中访问 $video.yt_id。

我究竟做错了什么?

如何获取 smarty 字符串 {$video.yt_id} 用于 php 消费?

{php}
$youtube    = new YouTube( 'I-WANT-THE-YOUTUBE-ID-HERE' );

$meta       = $youtube->get_meta();
$author     = $youtube->get_author();
$comments   = $youtube->get_comments();
{/php}

<p>
Duration: {php} echo sprintf( "%0.2f", $meta['duration'] / 60 ); {/php}mins | 
Rated: {php} echo $meta['rating']; {/php} out of 5 | 
Posted by {php} echo $author['username']; {/php} ( {php} echo $author['age']; {/php} y/o from {php} echo $author['location']; {/php} )
{php} echo nl2br( $meta['description'] ); {/php}
</p>
4

1 回答 1

1

这应该有帮助

{php}
    $video = $this->get_template_vars( 'video' );

    $youtube    = new YouTube( $video[ 'yt_id' ] );

    $meta       = $youtube->get_meta();
    $author     = $youtube->get_author();
    $comments   = $youtube->get_comments();

    $this->assign( 'meta', $meta );
    $this->assign( 'author', $author );
    $this->assign( 'comments', $comments );
{/php}

<p>
{assign var="format" value="%0.2f"}
{assign var="meta_duration60" value=$meta.duration/60}
Duration: {$format|sprintf:$duration}mins | 
Rated: {$meta.rating} out of 5 | 
Posted by {$author.username} ( {$author.age} y/o from {$author.location} )
{$meta.description|nl2br}
</p>

{php}您可以使用标签访问 smarty 变量$this->get_template_vars( $varname ),并使变量从{php}模板的其余部分可用$this->assign( 'varname', $varname )

对输出的更改未经测试,我希望它会起作用

于 2012-10-27T18:59:32.913 回答