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.
Esempio 18-7. template a componenti
<?php
// mettiamo il file "function.load_ticker.php" nella directory dei plugin
// scriviamo la funzione che carica i dati function fetch_ticker($symbol) { // qui metteremo la logica che carica $ticker_info da qualche parte return $ticker_info; }
function smarty_function_load_ticker($params, &$smarty) { // chiamiamo la funzione $ticker_info = fetch_ticker($params['symbol']);
// assegnamo la variabile del template $smarty->assign($params['assign'], $ticker_info); } ?>
|
index.tpl
---------
{* in index.tpl *}
{load_ticker symbol="YHOO" assign="ticker"}
Stock Name: {$ticker.name} Stock Price: {$ticker.price} |
|