Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

область применения Smarty (netghost)
Author Message
netghost
Участник форума



Joined: 06 May 2005
Posts: 53
Карма: 2
   поощрить/наказать

Location: планета Земля, город-герой Москва

PostPosted: Fri Mar 16, 2007 5:42 pm (написано за 17 минут 16 секунд)
   Post subject: область применения Smarty
Reply with quote

Добрый день!
Описание ситуации: недавно создана система на PHP5, то есть полностью выстроена её логика (запросы к БД, обработка данных, сбор статистики и т.д.). И, средствами echo, реализован примитивный (без дизайна) вывод информации.

Недавно установил Smarty. И вижу два пути развития (один из них я уже, можно сказать, реализовал):
1. Сделать один файл шаблона tpl (допустим design.tpl), который содержит в себе все общие элементы дизайна, которые характерны для этого сайта (шапка, цвет фона, рисунки и т.д.). И оставить в этом "общем" шаблоне переменную {$content}, которая будет содержать информацию с конкретного файла php. Этот вариант я уже частично реализовал. Вижу огромный плюс в том, что файл design.tpl легко изменить и полностью изменится весь дизайн системы, без особых затрат. Но содержимое $content уже не будет контролироваться Smarty, а будет непосредственно формироваться в файле PHP.
2. Сделать для каждого отдельного файла сценария php свой шаблон tpl. Теперь появится возможность полного контроля дизайна средствами Smarty... Например, если $content будет содержать таблицу, то "зебру" можно будет сделать только из-под php. А в готовых шаблонах можно сделать цикл средствами смарти и вывести красивую таблицу без особых проблем. Вижу минус в том, что будет создано много шаблонов (для каждого сценария php, который выводит информацию), поэтому при желании изменить дизайн всей системы придется менять каждый шаблон.

Вопрос: какой из двух путей более оптимален? Система готовится как коммерческий движок, поэтому предполагается продажа системы без дизайна, но с существующим шаблонизатором для более быстрой интеграции системы на сайт заказчика, путем легкой установки своего дизайна.

Благодарю за внимание. С ув. Netghost
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Mon Apr 09, 2007 10:20 am (спустя 23 дня 16 часов 37 минут; написано за 3 минуты 51 секунду)
   Post subject:
Reply with quote

Традиционный для Smarty способ - создаете header.tpl, footer.tpl, page.tpl и page.php (последняя пара - page.* - может многократно дублироваться по числу различных видов страниц сайта). В page.tpl вверху пишете {include file=header.tpl}, внизу - {include file=footer.tpl}, а в page.php включаете page.tpl. У такого способа, конечно, есть и минусы (например, расщепление дизайна по двум файлам), но со Смарти в 90% случаев используют именно его.

Можете также в page.php делать assign('main_block_name', 'page') и включать layout.tpl, в котором есть команда {include file="`$main_block_name`.tpl"}, тогда дизайн не расщепляется, и вообще - это более концептуально.
Back to top
View user's profile Send private message Send e-mail
Guest






Карма: 388
   поощрить/наказать


PostPosted: Wed Jul 18, 2007 10:45 pm (спустя 3 месяца 9 дней 12 часов 24 минуты; написано за 5 минут 50 секунд)
   Post subject:
Reply with quote

Хм, а а вообще очень часто использую fetch
тогда получается, что есть основная страница, в которой есть блоки типа контент, лефт, меню, и прочее
а дальше есть шаблоны поменьше, например отдельно шаболн меню, а потом
Code (php): скопировать код в буфер обмена
...
$s->assign("menu",$s->fetch('menu.tpl');
...
$s->display('main.tpl');
?>
тем более так как активно юзается css, то шаблон для двух разных меню в принципе может быть и один и тот-же, типа <ul id='{menu.id}'>..</ul>
который по сути является списком со ссылками и одним выделенным элементом
Back to top
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML