<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Pillole di Joomla!&#187; Mini guide su Joomla! di livello avanzato</title>
	<atom:link href="http://www.pilloledijoomla.it/livello/livello-avanzato/feed" rel="self" type="application/rss+xml" />
	<link>http://www.pilloledijoomla.it</link>
	<description>tutorial per realizzare siti internet in Joomla!</description>
	<lastBuildDate>Tue, 05 May 2009 07:43:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Realizziamo un plug-in SEO per Joomla!</title>
		<link>http://www.pilloledijoomla.it/livello-avanzato/realizziamo-un-plug-in-seo-per-joomla.html</link>
		<comments>http://www.pilloledijoomla.it/livello-avanzato/realizziamo-un-plug-in-seo-per-joomla.html#comments</comments>
		<pubDate>Tue, 05 May 2009 07:40:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[livello avanzato]]></category>
		<category><![CDATA[ottimizzazione]]></category>
		<category><![CDATA[plug-in]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://www.pilloledijoomla.it/?p=286</guid>
		<description><![CDATA[
I plug-in di Joomla! possono essere utilizzati per automatizzare operazioni sui contenuti (ad esempio per aggiungere il sistema di voto agli articoli&#8230;altro non è che l&#8217;aggiunta di codice html a quello dell&#8217;articolo).
Spesso si rivelano estremamente utili per effettuare azioni correttive sull&#8217;intero contenuto (compreso l&#8217;header della pagina); motivo per cui, sfruttando i metodi di JFactory, possiamo [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>I plug-in di Joomla! possono essere utilizzati per automatizzare operazioni sui contenuti (ad esempio per aggiungere il sistema di voto agli articoli&#8230;altro non è che l&#8217;aggiunta di codice html a quello dell&#8217;articolo).</p>
<p>Spesso si rivelano estremamente utili per effettuare azioni correttive sull&#8217;intero contenuto (compreso l&#8217;header della pagina); motivo per cui, sfruttando i metodi di JFactory, possiamo creare un plugin che all&#8217;evento di preparazione del contenuto, effettui dei controlli su title e description ed eviti valori di default (che non piacciono tanto agli spider dei motori di ricerca).<br />
Per leggere le informazioni meta ho utilizzato un metodo alternativo a quello della pillola per <a title="Evitare title e description duplicati" href="http://www.pilloledijoomla.it/livello-intermedio/evitare-title-e-description-duplicati.html">evitare title e description duplicati</a>, un metodo più generale e attuabile quando non si ha un riferimento al contenuto mediante <code>$this</code> (cosa possibile, invece, all&#8217;interno di un file di template)</p>
<p>In una prossima pillola vedremo nel dettaglio le tipologie di plug-in e gli eventi cui associarne l&#8217;esecuzione, per ora ci basti aver presente che il plug-in che andiamo a realizzare:</p>
<ul>
<li>agisce sul <em>content</em></li>
<li>viene invocato all&#8217;evento <em>onPrepareContent</em></li>
</ul>
<p>Come realizziamo il plug-in:</p>
<p>Creiamo  innanzitutto un file xml che descriva il plug-in: automatismo.xml</p>
<p><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />
&lt;install version="1.5" type="plugin" group="content"&gt;<br />
&lt;name&gt;AUTOMATISMO&lt;/name&gt;<br />
&lt;author&gt;Antonio Picone&lt;/author&gt;<br />
&lt;creationDate&gt;May 2009&lt;/creationDate&gt;<br />
&lt;copyright&gt;Copyright (C) 2008 - 2009 Open Source Matters. All rights reserved.&lt;/copyright&gt;<br />
&lt;license&gt;http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL&lt;/license&gt;<br />
&lt;authorEmail&gt;info@antoniopicone.it&lt;/authorEmail&gt;<br />
&lt;authorUrl&gt;www.joomla.org&lt;/authorUrl&gt;<br />
&lt;version&gt;1.5&lt;/version&gt;<br />
&lt;description&gt;Add the auto-populated header for SEO&lt;/description&gt;<br />
&lt;files&gt;<br />
&lt;filename plugin="automatismo"&gt;automatismo.php&lt;/filename&gt;<br />
&lt;/files&gt;<br />
&lt;params/&gt;<br />
&lt;/install&gt;</code></p>
<p>Successivamente, il file del plug-in (commentato riga per riga): automatismo.php</p>
<p><code>&lt;?php</code></p>
<p><code>// evitiamo l'accesso direto a questo file<br />
defined( '_JEXEC' ) or die( 'Restricted access' );</code></p>
<p><code>// registriamo l'esecuzione della funzione all'evento onPreapareContent<br />
$mainframe-&gt;registerEvent( 'onPrepareContent', 'plgContentAutomatismo' );</code></p>
<p><code>function plgContentAutomatismo( &amp;$row, &amp;$params, $page=0 )</code></p>
<p><code>{</code></p>
<p><code>// Creo un nuovo riferimento all'oggetto JConfig per prelevare i parametri di configurazione</code></p>
<p><code>$CONFIG =&amp; new JConfig();</code></p>
<p><code>// Creo un rif all'oggetto che descrive il documento</code></p>
<p><code>$document = &amp;JFactory::getDocument();</code></p>
<p><code>// JFactory fornisce metodi get per preleavare Title e Description, usiamoli <img src='http://www.pilloledijoomla.it/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </code></p>
<p><code>$title = $document-&gt;getTitle();</code></p>
<p><code>$description = $document-&gt;getDescription();</code></p>
<p><code>// Se il title di questa pagina è quello di default, lo riscrivo nella forma: sezione &gt; categoria &gt; titolo<br />
</code><br />
<code>if ($CONFIG-&gt;sitename == $title) $title = $row-&gt;section . ' &gt; ' . $row-&gt;category . ' &gt; ' . $row-&gt;title;</code></p>
<p><code>// Se la description è quella di default, la sosticuisco con i primi 140 caratteri del contenuto dell'articolo<br />
</code><br />
<code>if ($CONFIG-&gt;MetaDesc == $description) $description = substr($row-&gt;text, 0 ,140);<br />
</code><br />
<code>// Sfrutto i metodi set di JFactory per riscrivere Title e Description</code></p>
<p><code>$document-&gt;setDescription($description);</code></p>
<p><code>$document-&gt;setTitle($title);</code></p>
<p><code>}</code></p>
<p>Per installare il plug-in, basterà copiare i due files nella directory <code>/plugins/content/</code> e attivarlo dal back-end.</p>
<p><span style="font-family: Georgia;">That&#8217;s all folks <img src='http://www.pilloledijoomla.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.pilloledijoomla.it/livello-avanzato/realizziamo-un-plug-in-seo-per-joomla.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Joomla! e la tassonomia dei contenuti</title>
		<link>http://www.pilloledijoomla.it/livello-avanzato/joomla-e-la-tassonomia-dei-contenuti.html</link>
		<comments>http://www.pilloledijoomla.it/livello-avanzato/joomla-e-la-tassonomia-dei-contenuti.html#comments</comments>
		<pubDate>Mon, 06 Apr 2009 11:20:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[livello avanzato]]></category>
		<category><![CDATA[contenuti]]></category>
		<category><![CDATA[core]]></category>

		<guid isPermaLink="false">http://192.168.10.38/pillole/joomla/?p=211</guid>
		<description><![CDATA[Una volta appresa la gestione degli articoli di Joomla!, avrete notato che la tassonomia di questi ultimi è limitata a 2 livelli: sezione e categoria.
Ciò vuol dire che, per come è strutturato Joomla! 1.5, organizzare contenuti a livelli di profondità ulteriore risulta impossibile (a meno di ricorrere ad hack).
Ad esempio, immaginiamo di dover realizzare un [...]]]></description>
			<content:encoded><![CDATA[<p>Una volta appresa la gestione degli articoli di Joomla!, avrete notato che la tassonomia di questi ultimi è limitata a 2 livelli: sezione e categoria.</p>
<p>Ciò vuol dire che, per come è strutturato Joomla! 1.5, organizzare contenuti a livelli di profondità ulteriore risulta impossibile (a meno di ricorrere ad hack).</p>
<p>Ad esempio, immaginiamo di dover realizzare un magazine che abbia una sezione <em>sport</em> cui appartengono le categorie <em>calcio </em>e, chessò, <em>tennis</em>: se volessi specializzare gli articoli di calcio, dividendoli in due sottocategorie: <em>serie A</em> e <em>serie B</em>, per come è strutturato Joomla! 1.5, sarebbe impossibile.<br />
Questo limite, allo stato attuale, è particolarmente pesante dato che altri CMS (Drupal e WordPress in primis) gestiscono livelli di profondità pseudo-illimitati.</p>
<p>La buona notizia è che Joomla! 1.6 estenderà i livelli di tassonomia eliminando il limite a 2 (sezione-&gt;categoria), non solo: anche ora, nel caso sia davvero necessario organizzare contenuti in sottocategorie, potremmo, ad esempio sfruttare i <em><a href="/livello-avanzato/aggiungere-ulteriori-parametri-ai-contenuti.html">parametri aggiuntivi</a></em> messi a disposizione dal core di Joomla! 1.5 e aggirare il problema.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pilloledijoomla.it/livello-avanzato/joomla-e-la-tassonomia-dei-contenuti.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Recuperare informazioni sull&#8217;utente online</title>
		<link>http://www.pilloledijoomla.it/livello-avanzato/recuperare-informazioni-sullutente-online.html</link>
		<comments>http://www.pilloledijoomla.it/livello-avanzato/recuperare-informazioni-sullutente-online.html#comments</comments>
		<pubDate>Wed, 18 Mar 2009 21:36:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[livello avanzato]]></category>
		<category><![CDATA[core]]></category>

		<guid isPermaLink="false">http://localhost/pillole/joomla/?p=141</guid>
		<description><![CDATA[Spesso risulta necessario dover accedere alle informazioni dell&#8217;utente, per recuperare tali informazioni possiamo sfruttare un metodo della classe JFactory che consente di accedere all&#8217;array delle informazioni dell&#8217;utente, con la seguente sintassi:

$user =&#38; JFactory::getUser();

Facendo un print_r($user) si ottengono, infatti, le coppie variabile-valore di campi quali:

ID dell&#8217;utente
nome visualizzato
username
tipologia utente
date di registrazione ed ultimo accesso
parametri aggiuntivi

]]></description>
			<content:encoded><![CDATA[<p>Spesso risulta necessario dover accedere alle informazioni dell&#8217;utente, per recuperare tali informazioni possiamo sfruttare un metodo della classe JFactory che consente di accedere all&#8217;array delle informazioni dell&#8217;utente, con la seguente sintassi:</p>
<p><code><br />
$user =&amp; JFactory::getUser();<br />
</code></p>
<p>Facendo un <code>print_r($user)</code> si ottengono, infatti, le coppie variabile-valore di campi quali:</p>
<ul>
<li>ID dell&#8217;utente</li>
<li>nome visualizzato</li>
<li>username</li>
<li>tipologia utente</li>
<li>date di registrazione ed ultimo accesso</li>
<li>parametri aggiuntivi</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.pilloledijoomla.it/livello-avanzato/recuperare-informazioni-sullutente-online.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Aggiungere ulteriori parametri ai contenuti</title>
		<link>http://www.pilloledijoomla.it/livello-avanzato/aggiungere-ulteriori-parametri-ai-contenuti.html</link>
		<comments>http://www.pilloledijoomla.it/livello-avanzato/aggiungere-ulteriori-parametri-ai-contenuti.html#comments</comments>
		<pubDate>Tue, 17 Mar 2009 15:23:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[livello avanzato]]></category>
		<category><![CDATA[contenuti]]></category>
		<category><![CDATA[core]]></category>
		<category><![CDATA[parametri aggiuntivi]]></category>

		<guid isPermaLink="false">http://localhost/pillole/joomla/?p=112</guid>
		<description><![CDATA[Joomla! utilizza una serie di parametri aggiuntivi a corredo delle informazioni degli articoli per memorizzare impostazioni quali, ad esempio, la visualizzazione dell&#8217;icona di stampa, l&#8217;autore dell&#8217;articolo, ecc.
Questi parametri vengono salvati nella colonna attribs della tabella jos_content come elenco di variabili=valore
Può risultare utile agiungere dei parametri ad un contenuto (ad esempio un link ad un video [...]]]></description>
			<content:encoded><![CDATA[<p>Joomla! utilizza una serie di parametri aggiuntivi a corredo delle informazioni degli articoli per memorizzare impostazioni quali, ad esempio, la visualizzazione dell&#8217;icona di stampa, l&#8217;autore dell&#8217;articolo, ecc.</p>
<p>Questi parametri vengono salvati nella colonna attribs della tabella jos_content come elenco di variabili=valore</p>
<p>Può risultare utile agiungere dei parametri ad un contenuto (ad esempio un link ad un video pertinente al contenuto) di modo da arricchire le informazioni di quest&#8217;ultimo.</p>
<p>Per fare ciò possiamo sfruttare lo stesso principio utilizzato per i parametri aggiuntivi preesistenti nella, memorizzati nella colonna attribs, ai quali andranno aggiunti i nostri parametri aggiuntivi.</p>
<p>L&#8217;obiettivo, pertanto, è di memorizzare queste informazioni nel database ma anche poter gestire questi parametri allo stesso modo in cui Joomla! gestisce gli attuali parametri.</p>
<p>Vediamo, pertanto, quali modifiche apportare al componente com_content per aggiungere il supporto ai nostri parametri:</p>
<p>1. Modifichiamo il file <code>/administrator/components/com_content/models/article.xml</code> aggiungendo in fondo all&#8217;attuale elenco dei parametri, 3 parametri custom: param1, parma2, param3 appartenenti al gruppo myparams</p>
<p><code>&lt;params group="myparams"&gt;<br />
&lt;param name="param1" type="text" size="25" default="" label="Parametro 1" description="testo descrittivo parametro 1" /&gt;<br />
&lt;param name="param2" type="textarea" rows="5" cols="30" default="" label="Parametro 2" description="testo descrittivo parametro 2" /&gt;<br />
&lt;param name="param3" type="list" default="" label="Parametro 3" description="testo descrittivo parametro 3"&gt;<br />
&lt;option value="0"&gt;Zero&lt;/option&gt;<br />
&lt;option value="1"&gt;Uno&lt;/option&gt;<br />
&lt;/param&gt;<br />
&lt;/params&gt;</code></p>
<p>In questo modo abbiamo aggiunto alla definizione del XML ulteriori parametri da visualizzare nella view per la modifica dell&#8217;articolo.</p>
<p>2.  Modifichiamo il file di template del modulo di back-end per il componente com_content (<code>/administrator/components/com_content/admin.content.html.php</code><br />
), alla funzione <code>submitbutton(pressbutton)</code>, inserendo prima di <code>echo $pane-&gt;endPane();</code> le seguenti righe:</p>
<p><code>$title = JText::_( 'Parametri MyParams' );<br />
echo $pane-&gt;startPanel( $title, "myparams-page" );<br />
echo $form-&gt;render('params', 'myparams');<br />
echo $pane-&gt;endPanel();</code></p>
<p>Così facendo verrà effettuato il render del gruppo di parametri appena creato e, alla modifica dei valori di tali parametri, Joomla! memorizzerà anche i valori per tali parametri.</p>
<p>3. Infine, per richiamare dal front-end i valori dei parametri inseriti a corredo dell&#8217;articolo, inseriamo nel template utilizzato, magari nella pagina <code>default.php </code>di una view del com_content, quanto segue:</p>
<p><code>$params = &amp;JComponentHelper::getParams( 'com_content' );<br />
echo $params-&gt;get( 'param2' );</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pilloledijoomla.it/livello-avanzato/aggiungere-ulteriori-parametri-ai-contenuti.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Come realizzare un semplice componente di Joomla!</title>
		<link>http://www.pilloledijoomla.it/livello-avanzato/come-realizzare-un-semplice-componente-di-joomla.html</link>
		<comments>http://www.pilloledijoomla.it/livello-avanzato/come-realizzare-un-semplice-componente-di-joomla.html#comments</comments>
		<pubDate>Mon, 16 Mar 2009 06:41:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[livello avanzato]]></category>
		<category><![CDATA[componenti]]></category>

		<guid isPermaLink="false">http://localhost/pillole/joomla/?p=61</guid>
		<description><![CDATA[In questa pillola vediamo come realizzare un semplice componente che invia una email ad un indirizzo a partire dalla compilazione di un form.
Anche se piuttosto semplice, questo componente può essere adattato, ad esempio, ad inviare messaggi adeguatamente formattati ad un web service di un CRM, aggiungendo così al proprio sito istituzionale un potente sistema di [...]]]></description>
			<content:encoded><![CDATA[<p>In questa pillola vediamo come realizzare un semplice componente che invia una email ad un indirizzo a partire dalla compilazione di un form.</p>
<p>Anche se piuttosto semplice, questo componente può essere adattato, ad esempio, ad inviare messaggi adeguatamente formattati ad un web service di un CRM, aggiungendo così al proprio sito istituzionale un potente sistema di lead incoming che spesso manca in organizzazioni aziendali meio-piccole.</p>
<p>Il componente in questione non ha un back-end in quanto diamo per scontato che le email verranno inviate dall&#8217;inidirizzo email inserito in fase di installazione del CMS (o modificabile dalle impostazioni di Joomla!) ad un indirizzo info@miodominio.it</p>
<p>Il componente che andiamo a creare si chiamerà com_contatti e sarà strutturato in questo modo:</p>
<p>- controller contenente due task: <em>compila</em> ed <em>invia</em> per effettuare le operazioni di input dei dati ed invio della mail<br />
- 2 view per le azioni dei task di compilazione ed invio del form</p>
<p>NB: Di seguito, notate i parametri passati dal form: ce ne sono due nascosti che indicano quale option (=componente) e quale task richiamare.</p>
<p>Il componente sarà pertanto composto dai file:</p>
<p><code>/com_contatti/contatti.xml</code> contenente la definizione dei file e i dati del componente<br />
<code>/com_contatti/contatti.php</code> che istanzia il controller e definisce l&#8217;azione di default<br />
<code>/com_contatti/controller.php</code> contenete le azioni relative ai due task che intendiamo sviluppare<br />
<code>/com_contatti/views/index.html</code><br />
<code>/com_contatti/views/compila/view.html.php</code> contenente la definizione di una classe che eredita JView e richiama il metodo parent::display()<br />
<code>/com_contatti/views/compila/tmpl/index.html</code><br />
<code>/com_contatti/views/compila/tmpl/default.php</code> contenete il codice del form e la relativa azione cui passare il controllo<br />
<code>/com_contatti/views/invia/view.html.php</code> contenente la definizione di una classe che eredita JView e richiama il metodo parent::display()<br />
<code>/com_contatti/views/invia/tmpl/index.html</code><br />
<code>/com_contatti/views/invia/tmpl/default.php</code> contenete il codice di invio della mail con i dati prelevati dal form</p>
<p>Diamo un&#8217;occhiata al codice dei file:</p>
<p><code>contatti.xml</code></p>
<p><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />
&lt;install type="component" version="1.5.0"&gt;<br />
&lt;name&gt;Contatti&lt;/name&gt;<br />
&lt;description&gt;Componenti per invio di un form di contatti&lt;/description&gt;</code></p>
<p><code>&lt;files&gt;<br />
&lt;filename&gt;controller.php&lt;/filename&gt;<br />
&lt;filename&gt;contatti.php&lt;/filename&gt;<br />
&lt;filename&gt;index.html&lt;/filename&gt;<br />
&lt;filename&gt;views/index.html&lt;/filename&gt;<br />
&lt;filename&gt;views/contatti/index.html&lt;/filename&gt;<br />
&lt;filename&gt;views/contatti/view.html.php&lt;/filename&gt;<br />
&lt;filename&gt;views/contatti/tmpl/default.php&lt;/filename&gt;<br />
&lt;filename&gt;views/contatti/tmpl/index.html&lt;/filename&gt;<br />
&lt;/files&gt;</code></p>
<p><code> </code></p>
<p><code>&lt;/install&gt;</code></p>
<p>Ricordiamo che i file <code> index.html</code> non contengono altro che: <code>&lt;html&gt;&lt;body bgcolor="#FFFFFF"&gt;&lt;/body&gt;&lt;/html&gt;</code></p>
<p>dopodiché creiamo <code>contatti.php</code>:</p>
<p><code>&lt;?php</code></p>
<p><code>// Evito accesso diretto al file<br />
defined( '_JEXEC' ) or die( 'Restricted access' );</code></p>
<p><code>// Requiedo il controller base<br />
require_once( JPATH_COMPONENT.DS.'controller.php' );</code></p>
<p><code>// Rechiedo all'occorrenza il controller specifico<br />
if($controller = JRequest::getWord('controller')) {<br />
$path = JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php';<br />
if (file_exists($path)) {<br />
require_once $path;<br />
} else {<br />
$controller = '';<br />
}<br />
}</code></p>
<p><code>// Creo un'istanza del controller<br />
$classname    = 'ContattiController'.$controller;<br />
$controller   = new $classname( );</code></p>
<p><code>// notifichiamo che il task di default non è "view" (convenzione in Joomla!) bensì "compila-form"</p>
<p>$controller-&gt;registerDefaultTask('compila-form');</p>
<p></code></p>
<p><code>// Eseguo il task richiesto<br />
$controller-&gt;execute(JRequest::getCmd('task'));</code></p>
<p>Il file <code>controller.php</code>, invece, conterrà il codice dei due task:</p>
<p><code>&lt;?php</code></p>
<p><code>// Check to ensure this file is included in Joomla!<br />
defined('_JEXEC') or die( 'Restricted access' );</code></p>
<p><code>jimport('joomla.application.component.controller');</code></p>
<p><code>class ContattiController extends JController<br />
{</code></p>
<p><code>function compila()<br />
{<br />
$session =&amp; JFactory::getSession();<br />
JRequest::setVar( 'view', 'compila' );<br />
$this-&gt;display();<br />
}</code></p>
<p><code>function invia()<br />
{<br />
global $mainframe;</p>
<p>// Check for request forgeries<br />
JRequest::checkToken() or jexit( 'Invalid Token' );<br />
$session =&amp; JFactory::getSession();</p>
<p>jimport( 'joomla.mail.helper' );</p>
<p>$to                    = 'info@miodominio.it';<br />
$mailfrom             = $mainframe-&gt;getCfg('mailfrom');<br />
$sender             = JRequest::getString('sender', '', 'post');<br />
$from                 = JRequest::getString('from', '', 'post');<br />
$subject             = JRequest::getString('subject', $subject_default, 'post');<br />
$body                = JRequest::getString('body','','post');</p>
<p>// Invio l'email<br />
if ( JUtility::sendMail($from, $sender, $to, $subject, $body) !== true )</p>
<p>{<br />
print_r($mailer);<br />
JError::raiseNotice( 500, JText:: _ ('EMAIL_NOT_SENT' ));<br />
return $this-&gt;compila();<br />
}<br />
JRequest::setVar( 'view', 'invia' );<br />
$this-&gt;display();</p>
<p></code></p>
<p><code>}<br />
}<br />
</code><br />
Infine, i file contenenti le classi che ereditano JView:</p>
<p><code>/com_contatti/views/compila/view.html.php</code></p>
<p><code>&lt;?php</code></p>
<p><code>defined('_JEXEC') or die( 'Restricted access' );</code></p>
<p><code>jimport('joomla.application.component.view');</code></p>
<p><code>class ContattiViewCompila extends JView<br />
{<br />
function display($tpl = null)<br />
{</code></p>
<p><code>parent::display($tpl);<br />
}</code></p>
<p><code> </code></p>
<p><code>}<br />
</code></p>
<p><code>/com_contatti/views/invia/view.html.php</code></p>
<p><code>&lt;?php</code></p>
<p><code>defined('_JEXEC') or die( 'Restricted access' );</code></p>
<p><code>jimport('joomla.application.component.view');</code></p>
<p><code>class ContattiViewInvia extends JView<br />
{<br />
function display($tpl = null)<br />
{</code></p>
<p><code>parent::display($tpl);<br />
}</code></p>
<p><code> </code></p>
<p><code>}<br />
</code><br />
E infine, i file delle view: il primo con il form:</p>
<p><code>/com_contatti/views/compila/tmpl/default.php</code></p>
<p><code>&lt;?php // no direct access<br />
defined('_JEXEC') or die('Restricted access'); ?&gt;</code></p>
<p><code>&lt;form action="&lt;?php echo JURI::base() ?&gt;index.php" name="contattiForm" method="post"&gt;</p>
<p>&lt;div style="padding: 10px;"&gt;</p>
<p>&lt;p&gt;<br />
&lt;?php echo JText::_('SENDER'); ?&gt;:<br />
&lt;br /&gt;<br />
&lt;input type="text" name="sender" class="inputbox" value="nome mittente" size="25" /&gt;<br />
&lt;/p&gt;</p>
<p>&lt;p&gt;<br />
&lt;?php echo JText::_('YOUR_EMAIL'); ?&gt;:<br />
&lt;br /&gt;<br />
&lt;input type="text" name="from" class="inputbox" value="email" size="25" /&gt;<br />
&lt;/p&gt;</p>
<p>&lt;p&gt;<br />
&lt;?php echo JText::_('SUBJECT'); ?&gt;:<br />
&lt;br /&gt;<br />
&lt;input type="text" name="subject" class="inputbox" value="oggetto" size="25" /&gt;<br />
&lt;/p&gt;</p>
<p>&lt;p&gt;<br />
&lt;?php echo JText::_('BODY'); ?&gt;:<br />
&lt;br /&gt;<br />
&lt;input type="text" name="body" class="inputbox" value="oggetto" size="25" /&gt;<br />
&lt;/p&gt;</p>
<p>&lt;p&gt;<br />
&lt;button class="button" onclick="return submitbutton('send');"&gt;<br />
&lt;?php echo JText::_('SEND'); ?&gt;<br />
&lt;/button&gt;<br />
&lt;button class="button" onclick="window.close();return false;"&gt;<br />
&lt;?php echo JText::_('CANCEL'); ?&gt;<br />
&lt;/button&gt;<br />
&lt;/p&gt;<br />
&lt;/div&gt;</p>
<p></code></p>
<p><code>&lt;input type="hidden" name="layout" value="&lt;?php echo $this-&gt;getLayout();?&gt;" /&gt;<br />
&lt;input type="hidden" name="option" value="com_contatti" /&gt;<br />
&lt;input type="hidden" name="task" value="invia" /&gt;<br />
&lt;input type="hidden" name="link" value="&lt;?php echo $data-&gt;link; ?&gt;" /&gt;<br />
&lt;?php echo JHTML::_( 'form.token' ); ?&gt;<br />
&lt;/form&gt;<br />
</code><br />
e il file di invio che verrà presentato solo in caso di esito positivo dell&#8217;invio:</p>
<p><code>&lt;?php<br />
defined('_JEXEC') or die('Restricted access'); ?&gt;<br />
&lt;div style="padding: 10px;"&gt;<br />
&lt;div class="componentheading"&gt;<br />
&lt;?php echo 'Grazie per averci contattato!' ?&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pilloledijoomla.it/livello-avanzato/come-realizzare-un-semplice-componente-di-joomla.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

