# Template personalizzati (Smarty)

È possibile creare dei template personalizzati, che si sostituiscono a quelli standard (come EditView.tpl …).  
Il nuovo template viene utilizzato se i valori di $\_REQUEST della pagina soddisfano i requisiti. La registrazione di un nuovo template viene fatta tramite il metodo

**SDK::setSmartyTemplate($params, $src);**  
*$params : array associativo con i requisiti (vedere sotto)*  
*$src : percorso del nuovo template*

Per $params è possibile specificare un valore speciale (“$NOTNULL$”) per indicare che tale parametro deve esistere, con qualsiasi valore. I parametri non specificati vengono ignorati.  
Se la regola da inserire esiste già o non è compatibile con quelle esistenti (cioè potrebbe causare ambiguità per alcune $\_REQUEST), l’inserimento fallisce (e viene salvato nel log un messaggio esplicativo).

Per de-registrare un template personalizzato chiamare il metodo:

**SDK::unsetSmartyTemplate($params, $src = NULL);**  
*$params : array con i requisiti*  
*$src : percorso del template (se NULL, include tutti i files)*

Per sostituire completamente tutti i tipi di vista di un modulo servono almeno 7 regole:

<table border="1" id="bkmrk-%24params-note-array%28-" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">**$params**</td><td style="width: 50%;">**Note**</td></tr><tr><td style="width: 50%;">array( ‘module’=&gt;’Leads’, ‘action’=&gt;’ListView’)</td><td style="width: 50%;">ListView</td></tr><tr><td style="width: 50%;">array( ‘module’=&gt;’Leads’, ‘action’=&gt;’index’)</td><td style="width: 50%;">ListView</td></tr><tr><td style="width: 50%;">array( ‘module’=&gt;’Leads’, ‘action’=&gt;’DetailView’ , ‘record’=&gt;’$NOTNULL$’)</td><td style="width: 50%;">DetailView</td></tr><tr><td style="width: 50%;">array( ‘module’=&gt;’Leads’, ‘action’=&gt;’EditView’ , ‘record’=&gt;’$NOTNULL$’)</td><td style="width: 50%;">EditView (deve esserci record nella request)</td></tr><tr><td style="width: 50%;">array( ‘module’=&gt;’Leads’, ‘action’=&gt;’EditView’)</td><td style="width: 50%;">Creazione nuovo elemento</td></tr><tr><td style="width: 50%;">array( ‘module’=&gt;’Leads’, ‘action’=&gt;’EditView’, ‘record’=&gt;’$NOTNULL$’, "isDuplicate"=&gt;"true")</td><td style="width: 50%;">Duplicazione</td></tr><tr><td style="width: 50%;">array( ‘module’=&gt;’Leads’, ‘action’=&gt;’LeadsAjax’, ‘record’=&gt;’$NOTNULL$’, 'ajxaction'=&gt;'LOADRELATEDLIST', 'header'=&gt;'Products')</td><td style="width: 50%;">Related List dei Leads che mostra I Prodotti</td></tr></tbody></table>

**NOTA:** Se più regole corrispondono, verrà utilizzata la più specifica; ad esempio, se ci sono 2 regole, una con “$NOTNULL$” e una con il valore “Leads” e la request è “Leads”, verrà usata la seconda regola.

<p class="callout info">**Hooks**  
Smarty\_setup.php</p>