2015-04-27 6 views
1

У меня есть шаблон элемента листинга, как показано ниже:Smarty присвоить значение переменной внутри включаемого шаблона

<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"} 

Я не passign значения, а я в том числе шаблон, потому что я хочу использовать listing_item несколько раз, так что я не хочу загружать его каждый раз, когда мне это нужно.

Идея здесь включает шаблон один раз и присваивает значения & эхо, где это необходимо.

Итак, как я могу присвоить значение переменной внутри шаблона, который уже был включен и назначен переменной?

Или, что является лучшей практикой для архивирования моих потребностей в smarty?

Любая помощь будет высоко оценен

ответ

1

Если Вы используете smarty3 Вы можете использовать этот constuct:

{$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> 

И в пределах te использование плиты:

<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> 
+0

Благодарим вас за ответ. я связался с парнями на smarty irc, и thay сказал мне, что когда вы назначаете какую-то переменную, она получает визуализацию. поэтому вы не можете назначить значение переменной внутри переменной. потому что нет переменной внутри переменной, которая удерживает шаблон. теперь это только текст. , и они сказали мне, что когда вы включаете шаблон, он загружается после anc-кеширования. далее включает в себя игнорирование. поэтому нет штрафа за производительность. это то, что я точно ищу. smarty делает это автоматически. – Yarimadam

Смежные вопросы