Вывод динамических данных (rawsets, news lines) в Smarty

Ltivol

Новичок
Вывод динамических данных (rawsets, news lines) в Smarty

Весь мой php-опыт на данный момент - подключаемые файлы с функциями (php/html смесь).

Решил взяться за Smarty. Сразу непонятно, как выводить например выгребаемые из БД данные?

Например есть шаблон главной страницы сайта (2 колонки). В левой колонке в шаблоне стоит например {здесь новостная лента}. Но число выводимых новостей меняемо (сейчас 3 ,через час я захочу 5ть). Так вот, получается в такой задаче мне все равно придется в цикле вывода ленты мешать php с html и выводить каждую новость в обрамлении тегов?

Получается идея полного разделения дизайна от логики в случае вывода n-го числа одинаковых данных летит ко всем чертям?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Ltivol
Перед тем как
обычно читают мануал.
Тем-более, что мануал пролностью переведен на русский язык.
И читают его внимательно.
Судя по всему ты его или не читал совсем
Или читал по диагонали.

придется в цикле вывода ленты мешать php с htm
Нет. Использование php в шаблонах не есть хорошо.
В Smarty есть свои встроенные "обертки" для циклов.

Получается идея полного разделения дизайна от логики в случае вывода n-го числа одинаковых данных летит ко всем чертям?
Вполне возможно.
Особенно если не читать ман.
 

Ltivol

Новичок
Да, в Smarty есть конструкии foreach, if-else.

Что же это поулчается? Кроме названия странички и еще пары простых слов, весь сайт - работа с php-массивами (массив линков главного меню, массив линков подменю в зависисмости от данной станицы, новостные ленты , списки статей и другие табличные данные из БД).

Получается для вывода всего этого дизайнеру в шаблоне придется использовать циклы и прочие конструкции. Те дизайнер превращается в "недо-программиста" на придуманном кем-то Smarty-языке и темплейт будет представлять собой собой дикую смесь html и недо-php?
 

berkut

Новичок
почему php? там-же свой синтаксис. в шаблоне пишешь не {здесь новостная лента}, а {foreach NEWS in ...} {/foreach}
но это теже яйца.
 

Ltivol

Новичок
Mr_Max ,я все читал)
berkut, да теже яйца. См. выше мой второй пост .Смарти летит к чертям.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Ltivol
Те дизайнер превращается в "недо-программиста"
Скажи, пожалуйста, ты видишь в этом что-то оч сложное? Или IQ верстальщина не позволяте выучить пару-тройку тегов?.

-~{}~ 13.04.08 14:55:

Ты холивар решил здесь развести?
Он был. И не один.
Ты поищи.
 

Ltivol

Новичок
Использование даже таких конструкций уже нарушает идею полного разделения. имхо

А если представить себе сервис с миллионами пользователей, с боюсь себе даже представить каким числом запросов к сайту в секнуду (и все это БД) + и это все через движок шаблонов. Ух. Я молчу. Наверное Смарти (вообще движки шаблонов) оправданы лишь в определенных случаях.
 

berkut

Новичок
смарти вообщето компилит шаблоны в нативный пых-пых. но то, что сначала нужно собрать всё в массив, а потом опять в шаблоне в цикле разобрать - от этого никуда недется. а как ты вообще представляешь, чтобы не кодить шаблон?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Особенно запросов к сайту в секнуду (и все это БД)
Для каждого юзера базу "дергаешь"?...
Жесть.
Про кешированние слышал?
Smarty может выжержать оч много.

-~{}~ 13.04.08 15:10:

А вот тебе и результаты.
http://alexeyrybak.com/blitz/blitz_ru.html

Аргументы, объяснения и.т.д кроме
летит к чертям
Будут?
 

Ltivol

Новичок
Автор оригинала: Mr_Max
Для каждого юзера базу "дергаешь"?...
Жесть.
Про кешированние слышал?
Я ничего не дергаю (я пример привел), кеширование само собой.

Smarty может выжержать оч много.
Не сомневаюсь

-~{}~ 13.04.08 15:10:

А вот тебе и результаты.
http://alexeyrybak.com/blitz/blitz_ru.html

Спасибо, ознакомлюсь.

Аргументы, объяснения и.т.д кроме

Будут?
Аргументы. Я все выше написал ,в моем понимании использование if, циклов и прочего уже ломает идею полного разделения логики и дизайна ибо эти структуры - это уже ЛОГИКА а не исключительно картинка, форматирование представления

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

berkut, "по-другому" есть соображения (чтобы работало как я представлял вначале {здесь ньюзлайн} и при этом полное разделение, но опять таки все это вылевается в лишние телодвижения движка)

Как саммари: я не хочу охаить идею шаблонных движков. Все зависит от конкретных задач и требований; от того, что важнее - концепция разделения логики и дизайна или скорость работы.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
berkut
а у тебя есть аргументы, что нативный php и смарти это не
смарти вообщето компилит шаблоны в нативный пых-пых
;)
Невижу особых преимуществ в формированнии данных циклах движком.
Одни неудобности.
Чтоб поменять диз я вынужден буду лезть в движок.

Аргументы. Я все выше написал ,в моем понимании использование if, циклов и прочего уже ломает идею полного разделения логики и дизайна ибо эти структуры - это уже ЛОГИКА а не исключительно картинка, форматирование представления
А в моем понятии есть логика приложения, и есть логика отображения.

Заморачиваться - или нет, дело твое. Лично я предпочитаю все-таки использовать циклы, логику в отображении
 

zerkms

TDD infected
Команда форума
Лично я предпочитаю все-таки использовать циклы, логику в отображении
было бы интересно посмотреть на реализацию без циклов...

ps: вот в этом месте счас проснутся адепты xslt? :)
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
zerkms
было бы интересно посмотреть на реализацию без циклов...
Тогда весь смысл шаблонизатора, как-то теряется. :)

-~{}~ 13.04.08 16:53:

PHP:
$news = '';
while ($data=................){
     $news .= '<h1>'.$data['title'].'</h1>';
     $news .= '<div>'.$data['anons'].'</div>';
}
$smarty->assign('news', $news);
 

Ltivol

Новичок
Если говорить не о Смарти а просто о "каком-то новом шаблонизаторе", то я ясно вижу как можно сделать {здесь_новости} и получить список последних новостей при этом на php-стороне не будет ни намека на присуствие дизайн-тегов.

Хотя возможно игра не стоит свеч (многим наверное управляющие структуры в шаблоне не мешают), но это гарантированно избавит от этих структур и оставит в шаблонах только чистый html с простыми указаниями {здесь текст заголовка} и {здесь_лента_новостей}
 

baev

‹°°¬•
Команда форума
Если так уж важна забота о чистоте мозга верстальщика,
{здесь_новости} элементарно делаются написанием своего плагина к смарти.
 

kode

never knows best
А совсем правильный подход:

{* Здесь новости *}
{include file=news.tpl}

Я вот презираю :D людей которые HTML код внутри PHP генерят, пусть даже передавая его шаблонизатору.
 
Сверху