Как оптимально построить приложение на Smarty?

sunchess

Новичок
Как оптимально построить приложение на Smarty?

Речь идет о ветвлении подключения шаблонов.

Т.е. к примеру есть сайт, у этого сайта один вид для всех страниц(шапка, футер и т.д.) логично будет создать один темплет(к примеру index.tpl) и к нему подключать "середину" в зависимости от внешних данных.

T.е. в index.tpl инклудить.

Как таким образом тогда сделать кеширование?
 

BRat

o_0
sunchess
в смысле "как"? если кешируется основной шаблон, все включенные в него также кешируются.
 

Groove

Новичок
sunchess
hint: используй $cache_id

придумай как его генерировать
------------------------
//например для страницы генерации списка новостей
$cache_id = "news";
------------------------
//например для страницы генерации новости с
//идентификатором ХХХ
$cache_id = "news|".$news_id;
//проверить наличие кэша
if(!$smarty->is_cached('index.tpl', $cache_id)) {
//обращение к БД,
}
------------------------
$smarty->display('index.tpl', $cache_id);

примерно в этой направлении попробуй двигаться
 

sunchess

Новичок
BRat
в смысле "как"? если кешируется основной шаблон, все включенные в него также кешируются.
Это понятно, а если мне нужно кешировать только отделные включенные темплеты например статьи, а форму поиска нет?


Groove, спасибо что подсказал :)
 

BRat

o_0
sunchess
странно конечно, почему тебе форму поиска кешировать не надо )
Но вот тут - http://smarty.php.net/manual/en/caching.cacheable.php есть пример блока dynamic, который запрещает кеширование фрагмента в него заключенного.
Это если совсем кешировать не надо
 

Фанат

oncle terrible
Команда форума
интересно, почему никто из отвечавших не поинтересовался - а какое именно кэширование имеет в виду аффтар.

нет, я понимаю, конечно, что он сам не понимает. Но ему-то простительно. В отличие от.
 

sunchess

Новичок
Фанат
Хмм.. по моему понятно что кеширование Smarty если в разделе название Smarty присутствует.
 

Фанат

oncle terrible
Команда форума
Мля.
кэширование шаблонов или отдаваемого контента?
 

Alexandre

PHPПенсионер
Т.е. к примеру есть сайт, у этого сайта один вид для всех страниц(шапка, футер и т.д.) логично будет создать один темплет(к примеру index.tpl) и к нему подключать "середину" в зависимости от внешних данных.

T.е. в index.tpl инклудить.
sunchess
не используй инклуды в принципе. Если кешировать средствами смарти, то у тебя будет кешироваться вся результирующая страница.

если хочешь съэкономиить на месте (а для большого сайта - кеширование займет много места) то необходимо кешировать header, footer & content - отдельно. Как сказал Groove используй $cache_id
а далее собирай файл из трех частей и выдавай их.
вытаскивай данные федчем, и ассигни их в результирующий шаблон
 

qubit

Новичок
Автор оригинала: Alexandre
sunchess
не используй инклуды в принципе. Если кешировать средствами смарти, то у тебя будет кешироваться вся результирующая страница.
Это верно
если хочешь съэкономиить на месте (а для большого сайта - кеширование займет много места) то необходимо кешировать header, footer & content - отдельно. Как сказал Groove используй $cache_id
а далее собирай файл из трех частей и выдавай их.
вытаскивай данные федчем, и ассигни их в результирующий шаблон
Но теперь результирующий шаблон закешируется. И весь предыдущий кеш шаблонов уйдет неизвестно куда. Или я не прав?
 
Сверху