Форум → Программирование → PHP для идиотов → Расширения PHP → Smarty Обёртка данных в шаблон
Smarty Обёртка данных в шаблон
-
Вот смотрите, задача: есть некая переменная/массив , которые нужно прогнать через шаблон и получить в итоге результат в виде конечного html, ну т.е. вот теоретический пример
template.tpl:
<h1>{$myVarOnTemplate}</h1>
$myvar = "olololo";
$output = $smarty->команда($myvar,"myVarOnTemplate","template.tpl");
$smarty->assign("myblock",$output); где $output уже содержит <h1>olololo</h1> -
Ноя. 9, 2010, 8:13 п.п., спустя 22 минуты 40 секунд
Ты лучше скажи для чего нужно, а то не совсем понятно что хочешь -
Ноя. 9, 2010, 9:35 п.п., спустя 1 час 22 минуты 31 секунду
Ничё не извращение, это обычная необходимость.
Это необходимо для того чтобы динамически собирать множество данных в указанную переменную и отображать на шаблоне.
Т.е. к примеру возьмём динамически меняющие блоки (с разными типами: авторизация, голосования) для разных публикаций и соответственно с разными шаблонами. Порнографию в виде {if …. == 'vote'}{include file=""}{/if} я не собираюсь делать. Есть шаблон template к примеру такого вида<div id="left">{$blocks.left}</div>
<div id="center">{$content}</div>
<div id="right">{$blocks.right}</div>
Сейчас это заменяет нативный шаблон php, завёрнутый в ob_start.
Мне не совсем нравится, что в моём движке используются нативные шаблоны и шаблоны на smarty.
На данный момент я встретил, только один способ решения этого вопроса:
http://www.linux.org.ru/forum/web-development/3192946#comment-3195086 -
Ноя. 9, 2010, 10:01 п.п., спустя 25 минут 28 секунд
А чем не подходит?
$smarty->assign($file,"news");{include file="$file.tpl"}
-
Ноя. 9, 2010, 10:20 п.п., спустя 19 минут 14 секунд
Professor, ну как тебе сказатьцикл:
смотри ты предлагаешь создать массив примерно такого вида:
array[0]['template'] = "example_1.tpl"
array[0]['data'] = $data
assign(array)
array[1]['template'] = "another_2.tpl"
array[1]['data'] = $data
assign(array)
array[n]['template'] = "n"
array[n]['data'] = $data
assign(array)
А затем как ты говоришь в цикле загружать {include file="$n.template"} и соответственно отображать данные.
Фактически этот вариант решает конкретно мою задачу. Я о нём тоже думал, но почему-то предпочёл использовать в данном случае пока нативный шаблон и уже результат его заносить на шаблон smarty (имхо идиотизм высшей марки).
Я думал всё-таки как-то можно было бы заюзать smarty шаблон для конкретной переменной до вывода самого основного шаблона, но ты вижу понял смысл, спасиб всё равно за идеи.Спустя 215 сек.Но вариантtemplate.tpl:
<h1>{$myVarOnTemplate}</h1>
$myvar = "olololo";
$output = $smarty->команда($myvar,"myVarOnTemplate","template.tpl");
$smarty->assign("myblock",$output);
почему-то мне всё равно гораздо симпатичнее -
Ноя. 9, 2010, 10:35 п.п., спустя 14 минут 43 секунды
+ в карму тебе
хотя professor пойду я всё-таки в сторонуarray['template'] = "example_1.tpl"
array['data'] = $data
{include file="$n.template"} -
Ноя. 9, 2010, 10:43 п.п., спустя 7 минут 56 секунд
Твой вариантtemplate.tpl:
<h1>{$myVarOnTemplate}</h1>
index.php:
$myvar = "olololo";
$output = $smarty->команда($myvar,"myVarOnTemplate","template.tpl");
$smarty->assign("myblock",$output);
$smarty->display('template.tpl');
мой вариант
template.tpl:
{include file="$file.tpl"}
news.tpl:
<h1>{$myVarOnTemplate}</h1>
index.php:
$myvar = "olololo";
$smarty->assign("file","news");
$smarty->assign("myVarOnTemplate","olololo");
$smarty->display('template.tpl');
Про какие массивы ты говоришь?
А если есть массивы то покажи как с ними будет выглядеть твой предполагаемый(желаемый) вариант. -
-
Пожалуйста, авторизуйтесь, чтобы написать комментарий!