<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="ARTICLE @ XOOPS powered by FeedCreator" -->
<rss version="0.91">
    <channel>
        <title>Xoops Italia :: Articolo</title>
        <description><![CDATA[Articolo XML]]></description>
        <link>http://www.xoopsitalia.org/modules/article/view.article.php/33/c8</link>
        <lastBuildDate>Sun, 06 Jul 2008 07:16:49 +0200</lastBuildDate>
        <generator>ARTICLE @ XOOPS powered by FeedCreator</generator>
        <image>
            <url>http://www.xoopsitalia.org/modules/article/images/logo.png</url>
            <title>Xoops Italia :: Articolo</title>
            <link>http://www.xoopsitalia.org/modules/article/</link>
            <width>80</width>
            <height>15</height>
            <description>Articolo XML</description>
        </image>
        <language>it</language>
        <managingEditor>defkon1 at gmail dot com</managingEditor>
        <webMaster>defkon1 at gmail dot com</webMaster>
        <category>Tutorial Avanzati</category>
        <item>
            <title>Smarty e Xoops</title>
            <link>http://www.xoopsitalia.org/modules/article/view.article.php/33/c8</link>
            <description><![CDATA[Categoria: Temi e templates<br />Sorgente: (www.xoops-tips.com)<br />Parole chiave: smarty, temi, titolo di pagina, gestione blocchi, keywords<br />Sommario: Smarty e Xoops, binomio eccezionale. Entriamo più in profondità in questo rapporto analizzando da vicino questo potente motore per template.<strong>Indice contenuti </strong>
  <ol>
    <li><a href="#1">1. Cos'è Smarty</a></li>
    <li><a href="#2">2.  Xoops e Smarty</a>
      <ol>
        <li><a href="#2-1">2.1 Tag Smarty pre-impostati in Xoops</a></li>
        <li><a href="#22">2.2 Sezioni di codice da inserire in un tema</a></li>
      </ol>
    </li>
    <li><a href="#3">3. Esempi di funzioni Smarty in Xoops </a>
      <ol>
        <li><a href="#31">3.1 Utilizzo del modificatore in run-time all&rsquo;interno di Xoops</a>        </li>
        <li><a href="#31a">a) Personalizzazione dei blocchi</a></li>
        <li><a href="#31b">b) Titolo della pagina <{$xoops_pagetitle}></a></li>
        <li><a href="#31c">c) Parole chiave contestuali (meta parole chiave)</a></li>
        <li><a href="#32">3.2 Utilizzare i blocchi a destra</a></li>
      </ol>
    </li>
  </ol>
  <div align="justify">
<strong><br />
  1. Cos&rsquo;&egrave; Smarty? <a name="1" id="1"></a></strong><br />
    Questo &egrave; quanto l&rsquo;inventore di Smarty dice a riguardo:<br />
    <br />
    <cite>&ldquo;Sebbene Smarty sia noto soprattutto come &lsquo;Motore per temi grafici&rsquo;, in  realt&agrave; pu&ograve; essere meglio definito come: &lsquo; Piattaforma per temi e  presentazioni&rsquo;, Vale a dire che fornisce al programmatore e al grafico  una serie di strumenti per automatizzare operazioni normalmente  correlate all&rsquo;interfaccia di presentazione di un&rsquo;applicazione.  Sottolineo il termine <em>Piattaforma</em> perch&eacute; Smarty non &egrave; un semplice motore per sostituire tag all&rsquo;interno  di un template. Anche se pu&ograve; venire utilizzato a questo scopo, il suo  fine principale &egrave; quello di permettere uno sviluppo rapido e semplice  della vostra applicazione, conservando allo stesso tempo alte  prestazioni, scalabilit&agrave;, sicurezza e crescita futura&rdquo;</cite>
  <p align="right"><em>smarty.php.net</em></p>
<br />
  <strong>Ecco alcune delle principali caratteristiche di Smarty (da smarty.php.net):<br />
    </strong> <br />
  <strong>Caching: </strong> Smarty offre impostazioni dettagliate per il caching di una parte o di un&rsquo;intera pagina web. <br />
  <strong>File di configurazione:</strong> Smarty &egrave; in grado di assegnare variabili estratte dai file di configurazione. <br />
  <strong>Modificatori di variabili: </strong> Il contenuto di variabili assegnate pu&ograve; essere aggiustato per la visualizzazione attraverso i modificatori. <br />
  <strong>Funzioni per i template: </strong> Vi sono molte funzioni a disposizione dei grafici per gestire operazioni quali la generazione di segmenti di codice HTML. <br />
  <strong>Plugins: </strong> Quasi ogni aspetto di Smarty viene  controllato con l&rsquo;utilizzo di plugin da inserire nella cartella  apposita e richiamabili all&rsquo;interno di un template o nel codice  dell&rsquo;applicazione. <br />
  <strong>Debugging: </strong> Smarty viene distribuito con una console  interna per il debug. In questo modo il grafico pu&ograve; visualizzare tutte  le variabili assegnate e il programmatore pu&ograve; verificare le velocit&agrave; di  rendering.<br />
  <br />
  <hr align="center" width="80%" size="1" noshade="noshade" />
  <br />
  <strong>2. Xoops e Smarty<a name="2" id="2"></a> </strong> <br />
  Xoops ha adottato Smarty dalla  versione 2. Alcuni utenti si sono opposti all&rsquo;utilizzo di smarty e  hanno continuato lo sviluppo di Xoops 1 chiamandolo e-Xoops. <br />
  L&rsquo;utilizzo dei tag Smarty in Xoops &egrave; leggermente differente. Xoops usa <strong>&lt; &gt;</strong> per includere tag Smarty,   per cui invece di {$name}, Xoops utilizza <strong>&lt;{$name}&gt;</strong><br />
  <br />
  <br />
  <strong>2.1 Tag Smarty pre-impostati in Xoops</strong><strong><a name="2-1" id="2-1"></a></strong>
  <br />
  <br />
  <table width="100%" border="0" cellpadding="0" cellspacing="1" class="outer">
  <tbody>
    <tr align="left" valign="top">
      <td width="260" class="head"><strong>&lt;{php}&gt;Qui codice php&lt;{/php}&gt;</strong></td>
      <td width="627" class="even"><em> Inserisce parti in php puro </em></td>
    </tr>
    <tr align="left" valign="top">
      <td class="head"><strong>&lt;{$xoops_charset}&gt;</strong></td>
      <td class="even"><em>Inserisce le infomazioni sul seti di caratteri (meta tag) e.g "iso-8859-1", "UTF-8" </em></td>
    </tr>
    <tr align="left" valign="top">
      <td class="head"><strong>&lt;{$xoops_langcode}&gt;</strong></td>
      <td class="even"><em>Lingua del contenuto e.g. "DE", "EN" </em></td>
    </tr>
    <tr align="left" valign="top">
      <td class="head"><strong>&lt;{$xoops_meta_keywords}&gt;</strong></td>
      <td class="even"><em>Inserisce la lista delle parole chiave dalle impostazioni Meta tag/Pi&egrave; di pagina settings (meta tag) </em></td>
    </tr>
    <tr align="left" valign="top">
      <td class="head"><strong>&lt;{$xoops_meta_description}&gt; </strong></td>
      <td class="even"><em>Inserisce la descrizione del sito </em></td>
    </tr>
    <tr align="left" valign="top">
      <td class="head"><strong>&lt;{$meta_copyright}&gt;</strong></td>
      <td class="even"><em>Inserisce il copyright del testo </em></td>
    </tr>
    <tr align="left" valign="top">
      <td class="head"><strong>&lt;{$meta_robots}&gt; </strong></td>
      <td class="even"><em>Inserisce le informazioni W3C per i robot</em></td>
    </tr>
    <tr align="left" valign="top">
      <td class="head"><strong>&lt;{$meta_rating}&gt;</strong></td>
      <td class="even"><em>Inserisce le informazioni meta tag rating</em></td>
    </tr>
    <tr align="left" valign="top">
      <td class="head"><strong>&lt;{$xoops_sitename}&gt;</strong></td>
      <td class="even"><em>Inserisce il nome del sito</em></td>
    </tr>
    <tr align="left" valign="top">
      <td class="head"><strong>&lt;{$xoops_pagetitle}&gt;</strong></td>
      <td class="even"><em>Inserisce il titolo della pagina</em></td>
    </tr>
    <tr align="left" valign="top">
      <td class="head"><strong>&lt;{$xoops_theme}&gt; </strong></td>
      <td class="even"><em>La directory per i temi "/themes/" e.g "default", "xt2"</em></td>
    </tr>
    <tr align="left" valign="top">
      <td class="head"><strong>&lt;{$xoops_themecss}&gt;</strong></td>
      <td class="even"><em>Inerisce collegamento a style.css e.g "<a href="http://www.xoops.org/themes/default/style.css"" title="http://www.xoops.org/themes/default/style.css"" target="_blank">http://www.xoops.org/themes/default/style.css"</a> </em></td>
    </tr>
    <tr align="left" valign="top">
      <td class="head"><strong>&lt;{$xoops_url}&gt;</strong></td>
      <td class="even"><em>Inserisce l&rsquo;indirizzo del sito e.g "<a href="http://www.xoops.org"" title="http://www.xoops.org"" target="_blank">http://www.xoops.org"</a></em></td>
    </tr>
    <tr align="left" valign="top">
      <td class="head"><strong>&lt;{$xoops_js}&gt; </strong></td>
      <td class="even"><em>Inserisce codice javascript di XOOPS </em></td>
    </tr>
    <tr align="left" valign="top">
      <td class="head"><strong>&lt;{$xoops_banner}&gt;</strong></td>
      <td class="even"><em>Visualizza i banner </em></td>
    </tr>
    <tr align="left" valign="top">
      <td class="head"><strong>&lt;{$xoops_footer}&gt;</strong></td>
      <td class="even"><em>Mostra il pi&egrave; di pagina</em></td>
    </tr>
    <tr align="left" valign="top">
      <td class="head"><strong>&lt;{$xoops_isadmin}&gt;</strong></td>
      <td class="even"><em>True se il visitatore &egrave; Amministratore </em></td>
    </tr>
    <tr align="left" valign="top">
      <td class="head"><strong>&lt;{$xoops_isuser}&gt;</strong></td>
      <td class="even"><em>True se il visitatore &egrave; Utente Registrato </em></td>
    </tr>
    <tr align="left" valign="top">
      <td class="head"><strong>&lt;{$xoops_userid}&gt;</strong></td>
      <td class="even"><em>User Id dell&rsquo;utente </em></td>
    </tr>
    <tr align="left" valign="top">
      <td height="23" class="head"><strong>&lt;{$xoops_uname}&gt;</strong></td>
      <td class="even"><em>UserName dell&rsquo;utente </em></td>
    </tr>
  </tbody>
</table>
<strong><br />
<br />
2.2 Sezioni di codice da inserire in un tema<a name="22" id="22"></a></strong> <br />
<br />
<table width="100%" border="0" cellpadding="0" cellspacing="1" class="outer">
  <tbody>
    <tr>
      <td width="390" class="head">&lt;{foreach item=block from=$xoops_lblocks}&gt; <br />
        &lt;{$block.title}&gt; &lt;{$block.content}&gt; <br />
        &lt;{/foreach}&gt;</td>
      <td width="564" class="even"><em>Visualizza i blocchi a sinistra</em></td>
    </tr>
    <tr>
      <td class="head">&lt;{foreach item=block from=$xoops_ccblocks}&gt; <br />
        &lt;{$block.title}&gt; &lt;{$block.content}&gt; <br />
        &lt;{/foreach}&gt;</td>
      <td class="even"><em>Visualizza i blocchi centro-centro</em></td>
    </tr>
    <tr>
      <td class="head">&lt;{foreach item=block from=$xoops_clblocks}&gt; <br />
        &lt;{$block.title}&gt; &lt;{$block.content}&gt;<br />
        &lt;{/foreach}&gt;</td>
      <td class="even"><em> Visualizza i blocchi centro-sinistra </em></td>
    </tr>
    <tr>
      <td class="head">&lt;{foreach item=block from=$xoops_crblocks}&gt; <br />
        &lt;{$block.title}&gt; &lt;{$block.content}&gt; <br />
        &lt;{/foreach}&gt;</td>
      <td class="even"><em> Visualizza i blocchi centro-destra</em></td>
    </tr>
    <tr>
      <td class="head">&lt;{foreach item=block from=$xoops_rblocks}&gt;<br />
        &lt;{$block.title}&gt; &lt;{$block.content}&gt; <br />
        &lt;{/foreach}&gt;</td>
      <td class="even"><em>Visualizza i blocchi a destra</em></td>
    </tr>
    <tr>
      <td class="head">&lt;{$xoops_contents}&gt;</td>
      <td class="even"><em>Visualizza il contenuto dei moduli (news, forum, ecc...) </em></td>
    </tr>
    <tr>
      <td class="head">&lt;{if $xoops_showcblock == 1}&gt;</td>
      <td class="even"><em>Test sulle impostazioni di sistema per visualizzare blocchi in centro </em></td>
    </tr>
    <tr>
      <td class="head">&lt;{if $xoops_showrblock == 1}&gt;</td>
      <td class="even"><em>Test sulle impostazioni di sistema per visualizzare blocchi a destra </em></td>
    </tr>
    <tr>
      <td class="head">&lt;{if $xoops_showlblock == 1}&gt;</td>
      <td class="even"><em>Test sulle impostazioni di sistema per visualizzare blocchi a sinistra </em></td>
    </tr>
  </tbody>
</table>
<br />
<br />
<hr align="center" width="80%" size="1" noshade="noshade" />
<strong><br />
3. Esempi di funzioni Smarty in Xoops <a name="3" id="3"></a></strong> <br />
Le funzioni possibili di Smarty in Xoops sono numerose. Non cercheremo  di descriverle tutte, ne elencheremo piuttosto alcune semplici ma in  grado di estendere notevolmente le funzionalit&agrave; di Xoops. Utilizzando  la stessa logica di fondo e soprattutto la vostra immaginazione,  potrete utilizzare questi suggerimenti per personalizzare la vostra  piattaforma Xoops. <br />
<strong><br />
ATTENZIONE! </strong><em><br />
Ricordate di fare un backup dei vostri file prima di qualsiasi  tentativo di modifica, cos&igrave; da poter ritornare alla versione originale  nel caso i suggerimenti non funzionino per qualche ragione. Anche se  sono stati testati non possiamo garantirne il funzionamento per tutti  gli utenti.</em> <br />
<br />
<br />
<strong>3.1 - Utilizzo del modificatore in run-time all&rsquo;interno di Xoops<a name="31" id="31"></a></strong> <br />
Una delle caratteristiche di cui abbiamo parlato &egrave; quella di poter  impostare il contenuto di una variabile Smarty al momento della sua  visualizzazione. Questa opzione fornisce un controllo totale su dove e  come desiderate visualizzare i vostri contenuti. <strong><br />
<br />
<br />
a) Personalizzazione dei blocchi<a name="31a" id="31a"></a></strong> <br />
La visualizzazione dei blocchi in Xoops &egrave; legata ai modulo a cui &egrave;  assegnata. Se non avete impostato un modulo per l&rsquo;homepage, i blocchi  assegnati nella pagina superiore vengono in teoria associati a un  modulo che potete chiamare &ldquo;Modulo pagina superiore&rdquo;. Questo vale come  chiarimento se qualcuno ponesse domande sul rapporto blocco-modulo.  Xoops riceve le informazioni di associazione dalla tabella  block_module_link. <br />
Se desiderate associare, diciamo, un blocco a destra a un modulo e  volete visualizzarlo solo nella pagina superiore del modulo, l&rsquo;home  page. Xoops normalmente visualizzer&agrave; il blocco di destra in tutte le  pagine del modulo. Potete bloccare la variabile Smarty che controlla la  visualizzazione di ogni blocco a destra. <br />
Nel tema di default Xoops, per  mostrare i blocchi a destra, verifica se la variabile  &lt;{$xoops_showrblock}&gt; &egrave; impostata su &ldquo;1&rdquo;. Sapendo questo potete  impostare la variabile su &ldquo;0&rdquo; per fare in modo che i blocchi a destra  non compaiano in certe pagine del modulo. (Potrebbe non funzionare se  la pagina va in cache).<br />
<br />
<strong>Come fare</strong> <br />
Aprendo la pagina (.php) di un modulo in cui non volete visualizzare i blocchi di destra prima di: <strong><br />
</strong>
<div class="xoopsCode">include XOOPS_ROOT_PATH.'/footer.php'; </div>
 Aggiungete questo codice:<br />
 <div class="xoopsCode">$xoopsTpl-&gt;assign('xoops_showrblock', 0);</div>
Facendo questo impedirete la visualizzazione dei blocchi a destra in quella pagina. <strong><br />
<br />
<br />
b) Titolo della pagina &lt;{$xoops_pagetitle}&gt;<a name="31b" id="31b"></a><br />
</strong><br />
Il titolo di pagina svolge un ruolo importante nel posizionamento sui  motori di ricerca. Xoops di default inserisce il nome del modulo come  titolo di ciascuna pagina del modulo. Questo comportamento sicuramente  non aiuta nel posizionamento. Google e altri motori si basano molto sul  titolo di pagina, rispetto ad altro fattori, nella classificazione di  una pagina. Una pagina dal sito PR5 pu&ograve; posizionarsi molto meglio di  una pagina simile dal sito PR7 solo per il semplice fatto di avere un  titolo di pagina con tutte le &ldquo;parole chiavi&rdquo; rilevanti. <br />
Esistono numerosi metodi per migliorare i titoli di pagina. Assegnare  un proprio titolo di pagina potrebbe sembrare un compito complesso. Ma  risulta in realt&agrave; molto semplice imparando il funzionamento di  Smarty.<br />
Potete anche in questo caso bloccare la variabile Smarty usata  al momento della visualizzazione del titolo. Per esempio se desideriamo  mostrare come titolo di pagina il nome specifico di un file in download  per <strong>singlefile.php</strong> (solitamente usato dai moduli di download).<br />
<br />
<strong>Come fare<br />
</strong><br />
Sappiamo dalla lettura del file che <strong>$dtitle</strong> viene assegnata come titolo  di un download individuale. Sapendo questo possiamo assegnare il nome  del file come titolo. <br />
prima di:<br />
<div class="xoopsCode">include XOOPS_ROOT_PATH.'/include/comment_view.php';   <br />
include XOOPS_ROOT_PATH.'/footer.php';</div>
aggiungete<br /> 
<div class="xoopsCode">$xoopsTpl-&gt;assign('xoops_pagetitle', $dtitle); </div> 
Adesso abbiamo un titolo di pagina unico per ciascun download. Semplice no? <br />
  <br />
  <br />
  <strong>c) Parole chiave contestuali (meta parole chiave)<a name="31c" id="31c"></a><br />
  </strong><br />
  Il valore delle meta parole chiave nei motori di ricerca &egrave; abbastanza  opinabile. Google non pone attenzione ad esse, mentre Yahoo o MSN  potrebbero o meno dare rilevanza e anche nel caso lo facessero  l&rsquo;effetto sarebbe di certo minore rispetto a quello dei titoli di  pagina. Anche se potrebbe non aiutare non vi &egrave; alcun danno  nell&rsquo;implementare parole chiave personalizzate. Nel caso vogliate farlo  questi sono i passi necessari. Richieder&agrave; modifiche al file theme.html  e a pagine singole.<br />
  <br />
  <strong>Come fare</strong> <br />
  Diciamo che volete includere anche il nome del file in download nelle  parole chiave. Quel che vogliamo fare &egrave; semplicemente inserire il nome  del file tra le parole chiave di Xoops. Assegneremo quindi una  variabile Smarty al nome del download aggiungendola al file theme.html. <br />
  Aggiungere in singlefile.php (per esempio): <br />
<div class="xoopsCode">$xoopsTpl-&gt;assign('xoops_customkeywords', $dtitle);</div> 
prima di:    <br />
<div class="xoopsCode">include XOOPS_ROOT_PATH.'/include/comment_view.php';<br />
include XOOPS_ROOT_PATH.'/footer.php';</div> 
  Noterete che abbiamo creato una variabile Smarty chiamata xoops_customkeywords con il valore <strong>$dtitle</strong> <br />
 <br />
 Adesso aggiungete: (in theme.html)<br />
<div class="xoopsCode">&lt;{if $xoops_customkeywords != ' '}&gt;<br />
  &lt;{$xoops_meta_keywords}&gt;" /&gt;<br />
  &lt;{else}&gt;nt="&lt;{$xoops_meta_keywords}&gt;" /&gt;<br />
  &lt;{/if}&gt;</div>
<p><br />
  <strong>NOTA BENE: </strong> &lt;{if $xoops_customkeywords != ' '}&gt;<br />
Notate l&rsquo;uso delle virgolette  single e non doppie. Diversamente potreste avere una pagina bianca.  Questo codice dice a Xoops di verificare se la variabile Smarty  xoops_customkeywords &egrave; stata assegnata. In caso affermativo dice di  includerla alle parole chiave di default, diversamente di utilizzare le  normali parole chiave. Ora avete personalizzato le vostre parole chiave  per ciascuna pagina del vostro sito. <br />
Come suggerito dal nome la variabile e personalizzabile, per cui siete  voi a decidere quale informazione volete includere nelle parole chiave.  Potete usare semplicemente la variabile <strong>xoops_pagetitle</strong> invece di  crearne una nuova (xoops_customkeywords). <br />
Ma in alcuni casi preferirete  non inserire il titolo di pagina perch&eacute; troppo lungo e quindi poco  utile come parola chiave. 
<br />
<br />
<br />
<strong><br />
3.2 &ndash; Utilizzare i blocchi a destra<a name="32" id="32"></a></strong><br />
<br />
I blocchi vengono visualizzati da Xoops in questo modo     (in inglese per rispettare la sintassi del codice):
<p align="center"><br />
  <img src="/uploads/img445b8670355ef.jpg" alt="blocchi" width="478" height="60" border="1" /></p>
<p><br />
Modificando il file theme.html &egrave; possibile modificare l&rsquo;ordine dei  contenuti se lo si desidera, inserendo le parti di codice relative al  blocco nella sequenza desiderata. Qui vi mostreremo l&rsquo;utilizzo l&rsquo;uso  dei blocchi di destra nel vostro sito Xoops. Se non li utilizzate  allora potete utilizzarli in diversi modi, ecco di seguito due esempi.  (sono solo idee, per realizzarle dovrete eseguire le necessarie  modifiche al vostro file theme.html, come per esempio passare da un  layout a due colonne a uno a tre):<br />
<br />
a) Blocco centrale a tre colonne
<p align="center"><br />
  <strong><img src="/uploads/img445b868ca10b2.jpg" alt="blocchib" width="480" height="74" border="1" /></strong></p>
<p><br />
b) Doppio blocco centrale</p>
<p align="center"><br />

<img src="/uploads/img445b86ad92364.jpg" alt="blocchi3" width="480" height="90" /></p>
<p><br />
  Potete provare tutte le combinazioni che desiderate.<br /> 
  <strong>La sola  limitazione di Xoops &egrave; che non potete creare blocchi in posizione  personalizzata e che non sarete in grado di utilizzare i blocchi a  destra in modo personale se questo ultimi vengono utilizzati nel tema.  </strong><br />
  Se esistesse la possibilit&agrave; di creare blocchi in qualsiasi posizione  allora Xoops sarebbe di sicuro il sistema pi&ugrave; flessibile di tutti nel  presentare le informazioni all&rsquo;interno di blocchi. Ora provate voi!  Come sempre ci auguriamo che le informazioni ricevute vi saranno utili  e che le utilizzerete a piacimento nei vostri siti.Xoops dimostra di  essere &ldquo;estensibile&rdquo; e molto personalizzabile (con l&rsquo;eccezione del  rigido posizionamento imposto ai blocchi). Smarty semplicemente rende  il processo molto pi&ugrave; rapido e immediato. <br />
  Postate i vostri suggerimenti o modifiche personale sul forum Xoopsit!<br />
  </p>
<hr align="center" width="80%" size="1" noshade="noshade" />
<p><br />
  Ianez<br />
    <br />
    <strong>Tradotto per Xoopsit nel Marzo 2006 da un articolo rilasciato nel Febbraio 2005 su <a href="http://www.xoops-tips.com" target="_blank"><a href="http://www.xoops-tips.com" title="www.xoops-tips.com" target="_blank">www.xoops-tips.com</a></a>, </strong><strong> tutti i diritti sono riservati.</strong>
</p>
</div><br />]]></description>
            <author>Defkon1</author>
            <pubDate>Tue, 28 Mar 2006 14:03:28 +0200</pubDate>
        </item>
    </channel>
</rss>
