Get Smarty

Donate

Donate Bitcoin Bitcoin
Paypal

Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Largest classified with thousands of ads at Shoppok

Buy cheap eyeglasses from Cheapglasses123.com and save up to 80%.

Buy prescription glasses from www.australiaglasses.com and save.

Cheap Glasses Now On Sale at GlassesPeople.com. Starts At $7.95.

Where to buy discount wedding dresses and cheap smart dresses free shipping - Weddingdresstrend.com

Find Wedding Dresses Online at Canada from Ca-dresses.com

Find your local domestic cleaner

Brautkleider auf Topwedding.de

Best Wedding Dresses Australia at AuBridalDresses.com

Find free files to download on allwhatyouwant.net

Looking For Affordable Wedding Dresses 2015 at Best Prices On TDBridal.com

Advertisement

Multiple Caches Per Page

Você pode ter múltiplos arquivos de cache para uma simples chamada de display() ou fetch(). Vamos dizer que uma chamada para display('index.tpl') deve ter vários conteúdo de saída diferentes dependendo de alguma condição, e você quer separar os caches para cada um. Você pode fazer isso passando um cache_id como um segundo parâmetro para a chamada da função.

Example 14.6. Passando um cache_id para display()

require('Smarty.class.php');
$smarty = new Smarty;

$smarty->caching = true;

$my_cache_id = $_GET['article_id'];

$smarty->display('index.tpl',$my_cache_id);

Acima, nós estamos passando a variável $my_cache_id para display() com o cache_id. Para cada valor único de $my_cache_id, um cache em separado irá ser gerado para index.tpl. Nesse exemplo, "article_id" foi passado em URL e é usado como o cache_id.

Notas Técnicas

Tenha muito cuidado quando passar valores do cliente (web brownser) dentro da Smarty (ou alguma aplicação PHP.) Embora o exemplo acima usando o article_id vindo de uma URL pareça fácil, isso poderia ter consequências ruins. O cache_id é usado para criar um diretório no sistema de arquivos, então se o usuário decidir passar um valor extremamente largo para article_id, ou escrever um script que envia article_ids randômicos em um ritmo rápido, isso poderia possivelmente causar problemas em nível de servidor. Tenha certeza de limpar algum dado passado antes de usar isso. Nessa instãncia, talvez você saiba que o article_id tem um comprimento de 10 caracteres e isso é constituído somente de alfa-numéricos, e deve ser um article_id válido no database. Verifique isso!

Tenha certeza de passar o mesmo cache_id como o segundo parâmetro para is_cached() e clear_cache().

Example 14.7. Passando um cache_id para is_cached()

require('Smarty.class.php');
$smarty = new Smarty;

$smarty->caching = true;

$my_cache_id = $_GET['article_id'];

if(!$smarty->is_cached('index.tpl',$my_cache_id)) {
	// No cache available, do variable assignments here.
	$contents = get_database_contents();
	$smarty->assign($contents);
}

$smarty->display('index.tpl',$my_cache_id);

Você pode limpar todos os caches para um cache_id em particular passando o primeiro parâmetro null para clear_cache().

Example 14.8. Limpando todos os caches para um cache_id em particular

require('Smarty.class.php');
$smarty = new Smarty;

$smarty->caching = true;

// clear all caches with "sports" as the cache_id
$smarty->clear_cache(null,"sports");

$smarty->display('index.tpl',"sports");

Desta maneira, você pode "agrupar" seus caches juntos dando-lhes o mesmo cache_id.

Comments
No comments for this page.
Post a Comment
All comments are moderated. Support questions are ignored, use the forums instead.
Author:
Email: (not shown)
What is 4 plus 14? (Are you human?)

Advertisement

Sponsors [info]

UK Web Hosting @webhost.uk.net
Best Web Hosting @rshosting.com
Web Hosting UK @webhostinguk.com
Unlimited Web Hosting @infrenion.com
App Entwicklung @morphodo.com
First Click Internet Marketing @fcinternetmarketing.com
Credit Card Processing Company