Как кэшировать только часть страницы с помощью Smarty Template (PHP)? - PullRequest
2 голосов
/ 20 августа 2009

Как мне кэшировать все на странице шаблона Smarty, за исключением небольшой части содержимого (которое действительно динамично)?

Ответы [ 4 ]

1 голос
/ 25 сентября 2013

{nocache} используется для отключения кэширования раздела шаблона. Каждый {nocache} должен быть в паре с совпадающим {/nocachecasts.

Пример:

<html>    
<body>

<p>Some code, it will be cached</p>
{nocache}
<p>It won't be cached</p>
{/nocache}

</body>
</html>
1 голос
/ 21 августа 2009

Сортировка на основе ответа Зеда - если ваш «динамический» контент имеет конечное число перестановок, создайте отдельные шаблоны для этих перестановок и fetch() их на основе некоторой переменной. Что-то вроде:

<html>
<body>
<p>Common content would go here with other Smarty {$variables}.</p>

<p>You could then fetch other content using
{if $var1 eq 'foo'}
    {fetch file='/path/to/foo.tpl'}
{elseif $var1 eq 'bar'}
    {fetch file='/path/to/bar.tpl'}
{/if}
</body>
</html>

Если вы действительно не хотите, чтобы включенные файлы кэшировались, вам нужно настроить некую логику исключения, чтобы гарантировать, что эти суб-шаблоны не кэшируются.

Однако, если у вас есть неограниченное количество потенциальных динамических опций, вам, возможно, придется просто встроить HTML-код в свой PHP-код и передать его Smarty в качестве переменной представления.

0 голосов
/ 10 сентября 2009

Вы можете использовать функцию вставки Smarty.

http://www.smarty.net/manual/en/language.function.insert.php

Вы создаете функцию, которая вызывается и вставляет динамическое содержимое на страницу. Хорошо для тележек, например.

0 голосов
/ 20 августа 2009

Вы можете поместить вечеринку для кэширования в отдельный шаблон и извлечь ее содержимое с помощью fetch () из другого шаблона.

...