Tips & Tricks (trucchi e consigli) Gestione delle variabili vuote Certe volte potreste voler stampare un valore di default per una variabile vuota invece di stampare niente, ad esempio " " in modo che gli sfondi delle tabelle funzionino regolarmente. Molti userebbero una {if} per gestire questo caso, ma c'è un modo più veloce con Smarty, che è l'uso del modificatore default. Stampare   quando una variabile è vuota Gestione dei default delle variabili Se una variabile viene usata più volte nel template, applicarle ogni volta il modificatore default può diventare pesante. E' possibile rimediare a ciò assegnando alla variabile il suo valore di default con la funzione assign. Assegnazione del valore di default a una variabile del template Passare una variabile titolo ad un template di intestazione Quando la maggior parte dei template usa gli stessi intestazione e pié di pagina, è abbastanza comune creare dei template a parte per questi ultimi e poi includerli negli altri. Ma cosa succede se l'intestazione ha bisogno di avere un titolo diverso a seconda della pagina in cui ci troviamo? Potete passare il titolo all'intestazione nel momento dell'inclusione. Passare la variabile titolo al template dell'intestazione {$title|default:"BC News"} footer.tpl ---------- ]]> Quando viene disegnata la pagina principale, il titolo "Main Page" viene passato a header.tpl, e quindi sarà usato come titolo. Quando viene disegnata la pagina degli archivi, il titolo sarà "Archives". Notate che nell'esempio degli archivi abbiamo usato una variabile del file archives_page.conf invece che una definita nel codice. Notate anche che se la variabile $title non è impostata viene stampato "BC News", attraverso il modificatore di variabile default. Date Come regola generale, passate sempre le date a Smarty in forma di timestamp. Questo consente ai progettisti di usare date_format per un pieno controllo sulla formattazione delle date, e rende semplice anche il confronto fra date quando necessario. A partire da Smarty 1.4.0, potete passare date a Smarty come timestamp unix, timestamp mysql, o qualsiasi altro formato leggibile da strtotime(). uso di date_format Questo stamperà: Questo stamperà: Quando usate {html_select_date} in un template, il programmatore probabilmente vorrà convertire l'output del modulo in un formato timestamp. Ecco una funzione che può aiutarvi in questo. convertire le date provenienti da un modulo in timestamp ]]> WAP/WML I template WAP/WML richiedono header php di tipo Content-Type che deve essere passato insieme al template. Il modo più semplice per farlo sarebbe scrivere una funzione utente che stampi l'header. Tuttavia, se usate il caching, questo sistema non funziona, per cui lo faremo con il tag insert (ricordate che i tag insert non vanno in cache!). Assicuratevi che nulla sia inviato in output al browser prima del template, altrimenti l'header non potrà essere spedito. usare insert per scrivere un header Content-Type WML ]]> il template deve iniziare con il tag insert:

Welcome to WAP with Smarty! Press OK to continue...

Pretty easy isn't it?

]]>
Template a componenti Tradizionalmente, programmare le applicazioni a template funziona così: per prima cosa si accumulano le variabili nell'applicazione PHP (magari con query al database). Poi, si istanzia l'oggetto Smarty, si assegnano le variabili e si visualizza il template. Allora supponiamo di avere, ad esempio, un riquadro che visualizza le quotazioni di Borsa (stock ticker) nel nostro template. In questo caso raccoglieremmo i dati sulle azioni nell'applicazione, poi assegneremmo le variabili al template e le visualizzeremmo. Ma non sarebbe bello poter aggiungere questo stock ticker a qualsiasi applicazione semplicemente includendo il template, senza preoccuparci della parte relativa al caricamento dei dati? E' possibile fare questo scrivendo un plugin personalizzato che recuperi il contenuto e lo assegni ad una variabile del template. template a componenti assign($params['assign'], $ticker_info); } ?> ]]> Offuscare gli indirizzi E-mail Vi siete mai chiesti come fanno i vostri indirizzi E-mail a finire su così tante mailing list di spam? Uno dei modi che hanno gli spammer per raccogliere indirizzi E-mail è dalle pagine web. Per combattere questo problema, potete fare in modo che gli indirizzi E-mail appaiano in maniera criptata da javascript nel sorgente HTML, anche se continueranno ad essere visti e a funzionare correttamente nel browser. E' possibile farlo con il plugin mailto. Esempio di offuscamento di indirizzo E-mail Nota tecnica Questo metodo non è sicuro al 100%. Uno spammer, concettualmente, potrebbe programmare il suo raccoglitore di e-mail per decodificare questi valori, ma non è una cosa semplice.