mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-11-03 22:01:36 +01:00 
			
		
		
		
	
		
			
	
	
		
			379 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
		
		
			
		
	
	
			379 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| 
								 | 
							
								<?xml version="1.0" encoding="iso-8859-1"?>
							 | 
						|||
| 
								 | 
							
								<!-- $Revision$ -->
							 | 
						|||
| 
								 | 
							
								 <chapter id="tips">
							 | 
						|||
| 
								 | 
							
								  <title>Tips & Tricks (trucchi e consigli)</title>
							 | 
						|||
| 
								 | 
							
								  <para>
							 | 
						|||
| 
								 | 
							
								  </para>
							 | 
						|||
| 
								 | 
							
								  <sect1 id="tips.blank.var.handling">
							 | 
						|||
| 
								 | 
							
								   <title>Gestione delle variabili vuote</title>
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								    Certe volte potreste voler stampare un valore di default per una
							 | 
						|||
| 
								 | 
							
								    variabile vuota invece di stampare niente, ad esempio "&nbsp;" 
							 | 
						|||
| 
								 | 
							
								    in modo che gli sfondi delle tabelle funzionino regolarmente. Molti
							 | 
						|||
| 
								 | 
							
								    userebbero una {if} per gestire questo caso, ma c'<27> un modo pi<70> veloce
							 | 
						|||
| 
								 | 
							
								    con Smarty, che <20> l'uso del modificatore <emphasis>default</emphasis>.
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								   <example>
							 | 
						|||
| 
								 | 
							
								    <title>Stampare &nbsp; quando una variabile <20> vuota</title>
							 | 
						|||
| 
								 | 
							
								    <programlisting>
							 | 
						|||
| 
								 | 
							
								<![CDATA[
							 | 
						|||
| 
								 | 
							
								{* il modo lungo *}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								{if $title eq ""}
							 | 
						|||
| 
								 | 
							
								    
							 | 
						|||
| 
								 | 
							
								{else}
							 | 
						|||
| 
								 | 
							
								   {$title}
							 | 
						|||
| 
								 | 
							
								{/if}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								{* il modo breve *}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								{$title|default:" "}
							 | 
						|||
| 
								 | 
							
								]]>
							 | 
						|||
| 
								 | 
							
								    </programlisting>
							 | 
						|||
| 
								 | 
							
								   </example>
							 | 
						|||
| 
								 | 
							
								  </sect1>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  <sect1 id="tips.default.var.handling">
							 | 
						|||
| 
								 | 
							
								   <title>Gestione dei default delle variabili</title>
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								    Se una variabile viene usata pi<70> volte nel template, applicarle ogni
							 | 
						|||
| 
								 | 
							
								    volta il modificatore default pu<70> diventare pesante. E' possibile
							 | 
						|||
| 
								 | 
							
								    rimediare a ci<63> assegnando alla variabile il suo valore di default
							 | 
						|||
| 
								 | 
							
								    con la funzione <link 
							 | 
						|||
| 
								 | 
							
								    linkend="language.function.assign">assign</link>.
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								   <example>
							 | 
						|||
| 
								 | 
							
								    <title>Assegnazione del valore di default a una variabile del template</title>
							 | 
						|||
| 
								 | 
							
								    <programlisting>
							 | 
						|||
| 
								 | 
							
								<![CDATA[
							 | 
						|||
| 
								 | 
							
								{* mettete questo da qualche parte in cima al template *}
							 | 
						|||
| 
								 | 
							
								{assign var="title" value=$title|default:"no title"}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								{* se $title era vuota, ora contiene il valore "no title" quando la stampate *}
							 | 
						|||
| 
								 | 
							
								{$title}
							 | 
						|||
| 
								 | 
							
								]]>
							 | 
						|||
| 
								 | 
							
								    </programlisting>
							 | 
						|||
| 
								 | 
							
								   </example>
							 | 
						|||
| 
								 | 
							
								  </sect1>
							 | 
						|||
| 
								 | 
							
								  <sect1 id="tips.passing.vars">
							 | 
						|||
| 
								 | 
							
								   <title>Passare una variabile titolo ad un template di intestazione</title>
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								    Quando la maggior parte dei template usa gli stessi intestazione e pi<70> di
							 | 
						|||
| 
								 | 
							
								    pagina, <20> 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.
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								   <example>
							 | 
						|||
| 
								 | 
							
								    <title>Passare la variabile titolo al template dell'intestazione</title>
							 | 
						|||
| 
								 | 
							
								    <programlisting>
							 | 
						|||
| 
								 | 
							
								<![CDATA[
							 | 
						|||
| 
								 | 
							
								mainpage.tpl
							 | 
						|||
| 
								 | 
							
								------------
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								{include file="header.tpl" title="Main Page"}
							 | 
						|||
| 
								 | 
							
								{* qui va il corpo del template *}
							 | 
						|||
| 
								 | 
							
								{include file="footer.tpl"}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								archives.tpl
							 | 
						|||
| 
								 | 
							
								------------
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								{config_load file="archive_page.conf"}
							 | 
						|||
| 
								 | 
							
								{include file="header.tpl" title=#archivePageTitle#}
							 | 
						|||
| 
								 | 
							
								{* template body goes here *}
							 | 
						|||
| 
								 | 
							
								{include file="footer.tpl"}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								header.tpl
							 | 
						|||
| 
								 | 
							
								----------
							 | 
						|||
| 
								 | 
							
								<HTML>
							 | 
						|||
| 
								 | 
							
								<HEAD>
							 | 
						|||
| 
								 | 
							
								<TITLE>{$title|default:"BC News"}</TITLE>
							 | 
						|||
| 
								 | 
							
								</HEAD>
							 | 
						|||
| 
								 | 
							
								<BODY>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								footer.tpl
							 | 
						|||
| 
								 | 
							
								----------
							 | 
						|||
| 
								 | 
							
								</BODY>
							 | 
						|||
| 
								 | 
							
								</HTML>
							 | 
						|||
| 
								 | 
							
								]]>
							 | 
						|||
| 
								 | 
							
								    </programlisting>
							 | 
						|||
| 
								 | 
							
								   </example>
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								    Quando viene disegnata la pagina principale, il titolo "Main Page" viene
							 | 
						|||
| 
								 | 
							
								    passato a header.tpl, e quindi sar<61> usato come titolo. Quando viene
							 | 
						|||
| 
								 | 
							
								    disegnata la pagina degli archivi, il titolo sar<61> "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 <20> impostata viene stampato "BC News", attraverso
							 | 
						|||
| 
								 | 
							
								    il modificatore di variabile <emphasis>default</emphasis>.
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								  </sect1>
							 | 
						|||
| 
								 | 
							
								  <sect1 id="tips.dates">
							 | 
						|||
| 
								 | 
							
								   <title>Date</title>
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								    Come regola generale, passate sempre le date a Smarty in forma di
							 | 
						|||
| 
								 | 
							
								    timestamp. Questo consente ai progettisti di usare  <link
							 | 
						|||
| 
								 | 
							
								    linkend="language.modifier.date.format">date_format</link> per un 
							 | 
						|||
| 
								 | 
							
								    pieno controllo sulla formattazione delle date, e rende semplice
							 | 
						|||
| 
								 | 
							
								    anche il confronto fra date quando necessario.
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								   <note>
							 | 
						|||
| 
								 | 
							
								    <para>
							 | 
						|||
| 
								 | 
							
								     A partire da Smarty 1.4.0, potete passare date a Smarty come
							 | 
						|||
| 
								 | 
							
								     timestamp unix, timestamp mysql, o qualsiasi altro formato
							 | 
						|||
| 
								 | 
							
								     leggibile da strtotime().
							 | 
						|||
| 
								 | 
							
								    </para>
							 | 
						|||
| 
								 | 
							
								   </note>
							 | 
						|||
| 
								 | 
							
								   <example>
							 | 
						|||
| 
								 | 
							
								    <title>uso di date_format</title>
							 | 
						|||
| 
								 | 
							
								    <programlisting>
							 | 
						|||
| 
								 | 
							
								<![CDATA[
							 | 
						|||
| 
								 | 
							
								{$startDate|date_format}
							 | 
						|||
| 
								 | 
							
								]]>
							 | 
						|||
| 
								 | 
							
								    </programlisting>
							 | 
						|||
| 
								 | 
							
								    <para>
							 | 
						|||
| 
								 | 
							
								     Questo stamper<65>:
							 | 
						|||
| 
								 | 
							
								    </para>
							 | 
						|||
| 
								 | 
							
								    <screen>
							 | 
						|||
| 
								 | 
							
								<![CDATA[
							 | 
						|||
| 
								 | 
							
								Jan 4, 2001
							 | 
						|||
| 
								 | 
							
								]]>
							 | 
						|||
| 
								 | 
							
								    </screen>
							 | 
						|||
| 
								 | 
							
								    <programlisting>
							 | 
						|||
| 
								 | 
							
								<![CDATA[
							 | 
						|||
| 
								 | 
							
								{$startDate|date_format:"%Y/%m/%d"}
							 | 
						|||
| 
								 | 
							
								]]>
							 | 
						|||
| 
								 | 
							
								    </programlisting>
							 | 
						|||
| 
								 | 
							
								    <para>
							 | 
						|||
| 
								 | 
							
								     Questo stamper<65>:
							 | 
						|||
| 
								 | 
							
								    </para>
							 | 
						|||
| 
								 | 
							
								    <screen>
							 | 
						|||
| 
								 | 
							
								<![CDATA[
							 | 
						|||
| 
								 | 
							
								2001/01/04
							 | 
						|||
| 
								 | 
							
								]]>
							 | 
						|||
| 
								 | 
							
								    </screen>
							 | 
						|||
| 
								 | 
							
								    <programlisting>
							 | 
						|||
| 
								 | 
							
								<![CDATA[
							 | 
						|||
| 
								 | 
							
								{if $date1 < $date2}
							 | 
						|||
| 
								 | 
							
								   ...
							 | 
						|||
| 
								 | 
							
								{/if}
							 | 
						|||
| 
								 | 
							
								]]>
							 | 
						|||
| 
								 | 
							
								    </programlisting>
							 | 
						|||
| 
								 | 
							
								   </example>
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								    Quando usate {html_select_date} in un template, il programmatore
							 | 
						|||
| 
								 | 
							
								    probabilmente vorr<72> convertire l'output del modulo in un formato
							 | 
						|||
| 
								 | 
							
								    timestamp. Ecco una funzione che pu<70> aiutarvi in questo.
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								   <example>
							 | 
						|||
| 
								 | 
							
								    <title>convertire le date provenienti da un modulo in timestamp</title>
							 | 
						|||
| 
								 | 
							
								    <programlisting role="php">
							 | 
						|||
| 
								 | 
							
								<![CDATA[
							 | 
						|||
| 
								 | 
							
								<?php
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// stabiliamo che gli elementi del modulo si chiamino
							 | 
						|||
| 
								 | 
							
								// startDate_Day, startDate_Month, startDate_Year
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								$startDate = makeTimeStamp($startDate_Year, $startDate_Month, $startDate_Day);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function makeTimeStamp($year="", $month="", $day="")
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								   if(empty($year)) {
							 | 
						|||
| 
								 | 
							
								       $year = strftime("%Y");
							 | 
						|||
| 
								 | 
							
								   }
							 | 
						|||
| 
								 | 
							
								   if(empty($month)) {
							 | 
						|||
| 
								 | 
							
								       $month = strftime("%m");
							 | 
						|||
| 
								 | 
							
								   }
							 | 
						|||
| 
								 | 
							
								   if(empty($day)) {
							 | 
						|||
| 
								 | 
							
								       $day = strftime("%d");
							 | 
						|||
| 
								 | 
							
								   }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								   return mktime(0, 0, 0, $month, $day, $year);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								?>
							 | 
						|||
| 
								 | 
							
								]]>
							 | 
						|||
| 
								 | 
							
								    </programlisting>
							 | 
						|||
| 
								 | 
							
								   </example>
							 | 
						|||
| 
								 | 
							
								  </sect1>
							 | 
						|||
| 
								 | 
							
								  <sect1 id="tips.wap">
							 | 
						|||
| 
								 | 
							
								   <title>WAP/WML</title>
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								    I template WAP/WML richiedono header php di tipo Content-Type che deve
							 | 
						|||
| 
								 | 
							
								    essere passato insieme al template. Il modo pi<70> 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<74> essere spedito.
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								   <example>
							 | 
						|||
| 
								 | 
							
								    <title>usare insert per scrivere un header Content-Type WML</title>
							 | 
						|||
| 
								 | 
							
								    <programlisting role="php">
							 | 
						|||
| 
								 | 
							
								<![CDATA[
							 | 
						|||
| 
								 | 
							
								<?php
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// assicuratevi che apache sia configurato per le estensioni .wml!
							 | 
						|||
| 
								 | 
							
								// mettete questa funzione da qualche parte nell'applicazione, oppure
							 | 
						|||
| 
								 | 
							
								// in Smarty.addons.php
							 | 
						|||
| 
								 | 
							
								function insert_header($params)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								   // la funzione si aspetta un parametro $content
							 | 
						|||
| 
								 | 
							
								   if (empty($params['content'])) {
							 | 
						|||
| 
								 | 
							
								       return;
							 | 
						|||
| 
								 | 
							
								   }
							 | 
						|||
| 
								 | 
							
								   header($params['content']);
							 | 
						|||
| 
								 | 
							
								   return;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								?>
							 | 
						|||
| 
								 | 
							
								]]>
							 | 
						|||
| 
								 | 
							
								    </programlisting>
							 | 
						|||
| 
								 | 
							
								    <para>
							 | 
						|||
| 
								 | 
							
								     il template <emphasis>deve</emphasis> iniziare con il tag insert:
							 | 
						|||
| 
								 | 
							
								    </para>
							 | 
						|||
| 
								 | 
							
								    <programlisting>
							 | 
						|||
| 
								 | 
							
								<![CDATA[
							 | 
						|||
| 
								 | 
							
								{insert name=header content="Content-Type: text/vnd.wap.wml"}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								<?xml version="1.0"?>  
							 | 
						|||
| 
								 | 
							
								<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> 
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								<!-- begin new wml deck --> 
							 | 
						|||
| 
								 | 
							
								<wml> 
							 | 
						|||
| 
								 | 
							
								 <!-- begin first card -->
							 | 
						|||
| 
								 | 
							
								 <card>
							 | 
						|||
| 
								 | 
							
								  <do type="accept">
							 | 
						|||
| 
								 | 
							
								   <go href="#two"/>
							 | 
						|||
| 
								 | 
							
								  </do>
							 | 
						|||
| 
								 | 
							
								  <p>
							 | 
						|||
| 
								 | 
							
								   Welcome to WAP with Smarty!
							 | 
						|||
| 
								 | 
							
								   Press OK to continue...
							 | 
						|||
| 
								 | 
							
								  </p>
							 | 
						|||
| 
								 | 
							
								 </card>
							 | 
						|||
| 
								 | 
							
								 <!-- begin second card -->
							 | 
						|||
| 
								 | 
							
								 <card id="two">
							 | 
						|||
| 
								 | 
							
								  <p>
							 | 
						|||
| 
								 | 
							
								   Pretty easy isn't it?
							 | 
						|||
| 
								 | 
							
								  </p>
							 | 
						|||
| 
								 | 
							
								 </card>
							 | 
						|||
| 
								 | 
							
								</wml>
							 | 
						|||
| 
								 | 
							
								]]>
							 | 
						|||
| 
								 | 
							
								    </programlisting>
							 | 
						|||
| 
								 | 
							
								   </example>
							 | 
						|||
| 
								 | 
							
								  </sect1>
							 | 
						|||
| 
								 | 
							
								  <sect1 id="tips.componentized.templates">
							 | 
						|||
| 
								 | 
							
								   <title>Template a componenti</title>
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								    Tradizionalmente, programmare le applicazioni a template funziona
							 | 
						|||
| 
								 | 
							
								    cos<6F>: 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?
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								    E' possibile fare questo scrivendo un plugin personalizzato che
							 | 
						|||
| 
								 | 
							
								    recuperi il contenuto e lo assegni ad una variabile del template.
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								   <example>
							 | 
						|||
| 
								 | 
							
								    <title>template a componenti</title>
							 | 
						|||
| 
								 | 
							
								    <programlisting role="php">
							 | 
						|||
| 
								 | 
							
								<![CDATA[
							 | 
						|||
| 
								 | 
							
								<?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);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								?>
							 | 
						|||
| 
								 | 
							
								]]>
							 | 
						|||
| 
								 | 
							
								    </programlisting>
							 | 
						|||
| 
								 | 
							
								    <programlisting>
							 | 
						|||
| 
								 | 
							
								<![CDATA[
							 | 
						|||
| 
								 | 
							
								index.tpl
							 | 
						|||
| 
								 | 
							
								---------
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								{* in index.tpl *}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								{load_ticker symbol="YHOO" assign="ticker"}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Stock Name: {$ticker.name} Stock Price: {$ticker.price}
							 | 
						|||
| 
								 | 
							
								]]>
							 | 
						|||
| 
								 | 
							
								    </programlisting>
							 | 
						|||
| 
								 | 
							
								   </example>
							 | 
						|||
| 
								 | 
							
								  </sect1>
							 | 
						|||
| 
								 | 
							
								  <sect1 id="tips.obfuscating.email">
							 | 
						|||
| 
								 | 
							
								   <title>Offuscare gli indirizzi E-mail</title>
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								    Vi siete mai chiesti come fanno i vostri indirizzi E-mail a finire su
							 | 
						|||
| 
								 | 
							
								    cos<6F> tante mailing list di spam? Uno dei modi che hanno gli spammer 
							 | 
						|||
| 
								 | 
							
								    per raccogliere indirizzi E-mail <20> 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.
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								   <example>
							 | 
						|||
| 
								 | 
							
								    <title>Esempio di offuscamento di indirizzo E-mail</title>
							 | 
						|||
| 
								 | 
							
								    <programlisting>
							 | 
						|||
| 
								 | 
							
								<![CDATA[
							 | 
						|||
| 
								 | 
							
								{* in index.tpl *}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Send inquiries to
							 | 
						|||
| 
								 | 
							
								{mailto address=$EmailAddress encode="javascript" subject="Hello"}
							 | 
						|||
| 
								 | 
							
								]]>
							 | 
						|||
| 
								 | 
							
								    </programlisting>
							 | 
						|||
| 
								 | 
							
								   </example>
							 | 
						|||
| 
								 | 
							
								   <note>
							 | 
						|||
| 
								 | 
							
								    <title>Nota tecnica</title>
							 | 
						|||
| 
								 | 
							
								    <para>
							 | 
						|||
| 
								 | 
							
								     Questo metodo non <20> sicuro al 100%. Uno spammer, concettualmente, potrebbe
							 | 
						|||
| 
								 | 
							
								     programmare il suo raccoglitore di e-mail per decodificare questi valori,
							 | 
						|||
| 
								 | 
							
								     ma non <20> una cosa semplice.
							 | 
						|||
| 
								 | 
							
								    </para>
							 | 
						|||
| 
								 | 
							
								   </note>
							 | 
						|||
| 
								 | 
							
								  </sect1>
							 | 
						|||
| 
								 | 
							
								</chapter>
							 | 
						|||
| 
								 | 
							
								<!-- Keep this comment at the end of the file
							 | 
						|||
| 
								 | 
							
								Local variables:
							 | 
						|||
| 
								 | 
							
								mode: sgml
							 | 
						|||
| 
								 | 
							
								sgml-omittag:t
							 | 
						|||
| 
								 | 
							
								sgml-shorttag:t
							 | 
						|||
| 
								 | 
							
								sgml-minimize-attributes:nil
							 | 
						|||
| 
								 | 
							
								sgml-always-quote-attributes:t
							 | 
						|||
| 
								 | 
							
								sgml-indent-step:1
							 | 
						|||
| 
								 | 
							
								sgml-indent-data:t
							 | 
						|||
| 
								 | 
							
								indent-tabs-mode:nil
							 | 
						|||
| 
								 | 
							
								sgml-parent-document:nil
							 | 
						|||
| 
								 | 
							
								sgml-default-dtd-file:"../../../../manual.ced"
							 | 
						|||
| 
								 | 
							
								sgml-exposed-tags:nil
							 | 
						|||
| 
								 | 
							
								sgml-local-catalogs:nil
							 | 
						|||
| 
								 | 
							
								sgml-local-ecat-files:nil
							 | 
						|||
| 
								 | 
							
								End:
							 | 
						|||
| 
								 | 
							
								vim600: syn=xml fen fdm=syntax fdl=2 si
							 | 
						|||
| 
								 | 
							
								vim: et tw=78 syn=sgml
							 | 
						|||
| 
								 | 
							
								vi: ts=1 sw=1
							 | 
						|||
| 
								 | 
							
								-->
							 |