:: замена include на переменную в Smarty

s1mon

Новичок
:: замена include на переменную в Smarty

Интересует в Smarty одна вещь, я хочу заинклудить в основной index.tpl какой-то другой шаблон, например news.tpl - можно ли в index.tpl указать {NEWS} вместо {include file="news.tpl"}? Или {$NEWS} - почему спрашиваю - я пользовался так в FastTemplate, и для мне, и для заказчика так было удобней. Но в последнее время я стал потихоньку переходить на Smarty...
 

WP

^_^
Не уловил юмора. {$NEWS}выведет значение переменной NEWS. При чем здесь include? Или ты имел в виду переменную в параметре file - это можно, но без { и }
 

s1mon

Новичок
да, я имел ввиду второе ))

Как у меня было в FastTemplate:

$tpl -> define( array( 'c_form' => 'resume_form.html' ) );
$tpl -> parse('{CONTACTS_FORM}', 'c_form');

Шаблон:

<div>
{CONTACTS_FORM}
</div>

---
Мне нужно в Smarty аналогичное что-то
 

s1mon

Новичок
WP Смотри. Когда мы хотим вложить шаблон в главный шаблон, мы используем команду {include file="шаблон.tpl"}. Мне нужно заменить эту команду, на что-то типа {шаблон}. Мне потом это понадобится для того, чтобы в {шаблон} я мог бы проассигнить шаблон2.tpl, шаблон3.tpl... И так далее! Теперь понятно? =))
 

s1mon

Новичок
SaNeK Да нет же!!! Мне не include нужен... мне нужна в шаблоне переменная, в которую я могу или include запихать, или другую переменную...
 

SaNeK

Новичок
s1mon
ээээ....

Кто тебе мешает воткнуть в шаблон обычную переменную {$TEMPLATE}, а в PHP делать с этой переменной все, что душе угодно? Захочешь сделать в эту переменную include - $smarty->fetch(...), хочешь просто данные - $smarty->assign(). В ЧЕМ ПРОБЛЕМА?

-~{}~ 29.01.07 14:13:

только это уже слишком...
 

s1mon

Новичок
SaNeK
а как инклуд сделать? =) $smarty->assign("template", #???#);

Шаблон:
<div>
{$template}
</div>
 

SaNeK

Новичок
Ну что делает {include ...} в смарти?
Есть код:
PHP:
{include file="main.tpl" TITLE="заголовок" CODE="main"}
Смарти открывает main.tpl и производит его синтаксический разбор (парсит) и возвращает результат - короче поступает как со всеми шаблонами. На стороне PHP ты сможешь сделать тоже самое средствами:
PHP:
$smarty->assign("TITLE", "заголовок");
$smarty->assign("CODE", "main");
$body = $smarty->fetch("main.tpl");
return $body;
В зависимости от того, что надо подставить в $template:
- если обычную переменную - подставляй переменную:
PHP:
$smarty->assign("template", $переменная);
- если надо воткнуть инклюд - втыкай результат инклюда (текст):
PHP:
$smarty->assign("template", $body);
 

s1mon

Новичок
Спасибо! Буду пробовать, мне и нужно было узнать синтаксис Smarty... надеюсь поможет ))
 

SaNeK

Новичок
s1mon
меня по-прежнему не покидает ощущение, что где-то ты неправ. И неправ не в этой проблеме, а в целом в архитектуре - все-таки ты должен знать, где использовать {include}, а где обычную подстановку переменных.

-~{}~ 29.01.07 15:38:

s1mon
для смарти есть отличный, самый лучший русский мануал ;)
 

s1mon

Новичок
SaNeK
Просто если будет один большой шаблон всей страницы, и в поле где будет весь контент там может быть вложена допустим страница текста, а может быть вложена форма отправки сообщения, или что-то больше... Поэтому мне проще иметь одну переменную, и в нее уже определять сколько чего инклудить

-~{}~ 29.01.07 16:35:

Автор оригинала: SaNeK
В зависимости от того, что надо подставить в $template:
- если обычную переменную - подставляй переменную:
PHP:
$smarty->assign("template", $переменная);
- если надо воткнуть инклюд - втыкай результат инклюда (текст):
PHP:
$smarty->assign("template", $body);
Блин, спасибо, большое! Именно то что мне нужно! =))
 

s1mon

Новичок
Santiago
Это тоже нужно всем, но я не нуждаюсь, в безтолковых ответах, типа - "смотри здесь http://smarty.php.net/manual/ru/ " или "ask google". Я спросил, кто смог, тот помог, и спасибо ему за это.
 
Сверху