Smarty为包含的模板

时间:2015-04-27 11:56:36

标签: php templates smarty3

我有一个列表项模板如下:

<div class="listing-item">
    <div class="photo">{$thumbnail}</div>
    <div class="title">{$name}</div>
    <div class="price">{$price} {$currency}</div>
    <div class="location">{$city}/{$town}</div>
</div>

我从其他模板文件中包含此模板,并将其分配到名为 listing_item 的变量中,如下所示:

<div class="listing-box-container clearfix">
    {include file="common/product/listing_item.tpl" assign=listing_item}
</div>

现在我有一个名为 listing_item 的变量,它包含单个列表项的模板。

我想将值分配给 listing_item 中的变量,如:

{assign var="$listing_item.thumbnail" value="Sometown"}

当我包含模板时,我不会传递值,因为我想多次使用 listing_item ,所以我不想在每次需要时加载它。

这里的想法是包含模板一次,并分配值和&amp;回声它需要的地方。

那么,如何在已包含并分配给变量的模板中为变量赋值?

或者,在smarty中满足我的需求的最佳做法是什么?

任何帮助都将受到高度赞赏

1 个答案:

答案 0 :(得分:1)

如果您使用smarty3您可以使用此结构:

{$listing_item = [
    'thumbnail' => 'some_thumbnail',
    'title' => 'some_title',
    'price' => 'some_price'
]}

有关变量语法的更多信息http://www.smarty.net/docs/en/language.syntax.variables.tpl

现在将其传递给模板:

<div class="listing-box-container clearfix">
    {include file="common/product/listing_item.tpl" listing_item=$listing_item}
</div>

在模板中使用:

<div class="listing-item">
    <div class="photo">{$listing_item.thumbnail}</div>
    <div class="title">{$listing_item.name}</div>
    <div class="price">{$listing_item.price} {$listing_item.currency}</div>
    <div class="location">{$listing_item.city}/{$listing_item.town}</div>
</div>