Пуля — дура. Пых — молодец.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха переехала на новый сервер, ура!

Краснодарское время: 25 Май, 2012, 05:36:15

Страниц: [1]
Печать
Автор Тема: Smarty Обёртка данных в шаблон  (Прочитано 388 раз)
0 Пользователей и 1 Гость смотрят эту тему.
pissflaps    ↓ 
09 Ноябрь, 2010, 07:50:38
НЕ ХУЕТА! ХУЕТА!


Карма: 5
Сообщений: 152
Сила слова: 3.29

Вот смотрите, задача: есть некая переменная/массив , которые нужно прогнать через шаблон и получить в итоге результат в виде конечного html, ну т.е. вот теоретический пример
 
template.tpl:
<h1>{$myVarOnTemplate}</h1>
 
$myvar = "olololo";
$output = $smarty->команда($myvar,"myVarOnTemplate","template.tpl");
$smarty->assign("myblock",$output);   где $output уже содержит <h1>olololo</h1>
Записан
Professor    ↓ 
09 Ноябрь, 2010, 08:13:18 , спустя 22 минуты 40 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 30
Сообщений: 2074
Сила слова: 1.45

Ты лучше скажи для чего нужно, а то не совсем понятно что хочешь
Записан

Записки профессора : Кто тут, к примеру, в цари крайний? Никого?! Так я первый буду!
KaFe    ↓ 
09 Ноябрь, 2010, 08:34:22 , спустя 21 минуту 4 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: Сраный Тролль

Карма: -13346
Сообщений: 1727
Сила слова: -772.79

pissflaps, если я правильно понял, то это извращение какое то.
Записан

pissflaps    ↓ 
09 Ноябрь, 2010, 09:35:49 , спустя 1 час 1 минуту 27 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: 5
Сообщений: 152
Сила слова: 3.29

Ничё не извращение, это обычная необходимость.
Это необходимо для того чтобы динамически собирать множество данных в указанную переменную и отображать на шаблоне.
Т.е. к примеру возьмём динамически меняющие блоки (с разными типами: авторизация, голосования) для разных публикаций и соответственно с разными шаблонами. Порнографию в виде {if .... == 'vote'}{include file=""}{/if} я не собираюсь делать. Есть шаблон template к примеру такого вида
HTML
<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
Записан
Professor    ↓ 
09 Ноябрь, 2010, 10:01:17 , спустя 25 минут 28 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 30
Сообщений: 2074
Сила слова: 1.45

А чем не подходит?
$smarty->assign($file,"news");
 
Text
{include file="$file.tpl"}
Записан

Записки профессора : Кто тут, к примеру, в цари крайний? Никого?! Так я первый буду!
pissflaps    ↓ 
09 Ноябрь, 2010, 10:20:31 , спустя 19 минут 14 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: 5
Сообщений: 152
Сила слова: 3.29

Professor, ну как тебе сказать
PHP
цикл:
смотри ты предлагаешь создать массив примерно такого вида:
[php]
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)
[/php]
 
А затем как ты говоришь в цикле загружать {include file="$n.template"} и соответственно отображать данные.
Фактически этот вариант решает конкретно мою задачу. Я о нём тоже думал, но почему-то предпочёл использовать в данном случае пока нативный шаблон и уже результат его заносить на шаблон smarty (имхо идиотизм высшей марки).
Я думал всё-таки как-то можно было бы заюзать smarty шаблон для конкретной переменной до вывода самого основного шаблона, но ты вижу понял смысл, спасиб всё равно за идеи.  {+++215+++} Но вариант
[php]template.tpl:
<h1>{$myVarOnTemplate}</h1>
 
$myvar = "olololo";
$output = $smarty->команда($myvar,"myVarOnTemplate","template.tpl");
$smarty->assign("myblock",$output);[/php]
почему-то мне всё равно гораздо симпатичнее
Записан
pissflaps    ↓ 
09 Ноябрь, 2010, 10:35:14 , спустя 14 минут 43 секунды
НЕ ХУЕТА! ХУЕТА!


Карма: 5
Сообщений: 152
Сила слова: 3.29

+ в карму тебе
хотя professor пойду я всё-таки в сторону
PHP
array[i]['template'] = "example_1.tpl"
array[i]['data'] = $data
{include file="$n.template"}
Записан
Professor    ↓ 
09 Ноябрь, 2010, 10:43:10 , спустя 7 минут 56 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 30
Сообщений: 2074
Сила слова: 1.45

Твой вариант
PHP
template.tpl:
<h1>{$myVarOnTemplate}</h1>
 
index.php:
$myvar = "olololo";
$output = $smarty->команда($myvar,"myVarOnTemplate","template.tpl");
$smarty->assign("myblock",$output);
$smarty->display('template.tpl');
 

мой вариант
 
PHP

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');
 

Про какие массивы ты говоришь?
А если есть массивы то покажи как с ними будет выглядеть твой предполагаемый(желаемый) вариант.
Записан

Записки профессора : Кто тут, к примеру, в цари крайний? Никого?! Так я первый буду!
pissflaps    ↓ 
09 Ноябрь, 2010, 10:43:48 , спустя 38 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: 5
Сообщений: 152
Сила слова: 3.29

Тема закрыта :) Не парься.
Записан
Strate    ↓ 
21 Ноябрь, 2010, 12:53:20 , спустя 11 дней 2 часа 9 минут 32 секунды
НЕ ХУЕТА! ХУЕТА!

Карма: 1
Сообщений: 12
Сила слова: 8.33

$smarty->fetch() ?
Записан
Страниц: [1]
Печать
 

Перейти в:  

Этот топик скрыли: adw0rd, Sinkler