<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5176571438133373975</id><updated>2025-11-14T17:00:00.056+01:00</updated><category term="Joomla 1.5"/><category term="Joomla 1.6"/><category term="Joomla 2.5"/><category term="Design pattern"/><category term="C#"/><category term="VirtueMart"/><category term="Dependency Injection"/><category term="Joomla 1.7"/><category term="Joomla Platform"/><category term="PHP"/><category term="Analista programmatore"/><category term="Database ad oggetti"/><category term="Eclipse"/><category term="Facebook"/><category term="Promozione siti web"/><category term="Shop Migrator"/><category term="Symfony"/><category term="Xdebug"/><category term="jQuery"/><title type='text'>Paolo Mosca analista programmatore esperto</title><subtitle type='html'>Applicazioni web, sviluppo App mobile Android e iOS, creazione siti web</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>41</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-67851143545014701</id><published>2013-10-08T14:13:00.000+02:00</published><updated>2013-10-08T14:44:54.293+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Joomla 2.5"/><title type='text'>Joomla loadposition</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;&lt;a href=&quot;http://joomla.org/&quot; target=&quot;_blank&quot;&gt;Joomla&lt;/a&gt;&lt;/b&gt; attraverso il &lt;b&gt;loadposition&lt;/b&gt;&amp;nbsp;ci permette di mostrare l&#39;output di un &lt;b&gt;modulo&lt;/b&gt; direttamente nel contenuto di un articolo. Questo è reso possibile proprio dal &lt;b&gt;plugin &quot;&lt;/b&gt;&lt;u&gt;Content - Load Modules&lt;/u&gt;&quot; che è abilitato di default nell&#39;installazione di &lt;b&gt;Joomla&lt;/b&gt;. Attraverso il parametro del &lt;b&gt;plugin&lt;/b&gt;&amp;nbsp;possiamo dire a &lt;b&gt;Joomla&lt;/b&gt; se inserire il &lt;b&gt;modulo&lt;/b&gt; in un div oppure in una tabella o in nessun tag. Consiglio di lasciare l&#39;impostazione di default che inserisce il &lt;b&gt;modulo&lt;/b&gt; in un div. Vediamo ora come utilizzare il &lt;b&gt;loadposition&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
Joomla loadposition&lt;/h2&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Creiamo un &lt;b&gt;modulo&lt;/b&gt;&amp;nbsp;e come posizione mettiamo pure una non presente all&#39;interno del nostro &lt;b&gt;template&lt;/b&gt;&amp;nbsp;(inventiamo pure un nome univoco. Ad esempio &lt;i&gt;posizione1&lt;/i&gt;). Ci basterà ora inserire nel nostro articolo, nel punto in cui vogliamo far comparire il &lt;b&gt;modulo&lt;/b&gt;, la seguente stringa:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;i&gt;{loadposition posizione1}&lt;/i&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
In questo modo il nostro &lt;b&gt;modulo&lt;/b&gt; apparirà nell&#39;articolo che abbiamo creato. Notiamo che se abbiamo più &lt;b&gt;moduli&lt;/b&gt; associati alla stessa posizione il &lt;b&gt;plugin&lt;/b&gt; li inserirà tutti. Infatti, come dice il termine stesso, stiamo caricando (load) una posizione (position).&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
Una variante a Joomla loadposition: il loadmodule&lt;/h2&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Attraverso il &lt;b&gt;loadmodule&lt;/b&gt;&amp;nbsp;andiamo invece a caricare il &lt;b&gt;modulo&lt;/b&gt;&amp;nbsp;del tipo specificato. Supponiamo di voler mostrare nel nostro articolo il &lt;b&gt;modulo&lt;/b&gt; di login. La sintassi è molto semplice:&lt;/div&gt;
&lt;br /&gt;
&lt;i&gt;{loadmodule mod_login}&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Il nome del tipo (mod_login nell&#39;esempio) deve essere quello della cartella che contiene il &lt;b&gt;modulo&lt;/b&gt;. E&#39; possibile anche caricare un modulo specificando il titolo che gli abbiamo dato nel Module Manager:&lt;/div&gt;
&lt;br /&gt;
&lt;i&gt;{loadmodule module,title}&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/67851143545014701/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2013/10/joomla-loadposition.html#comment-form' title='2 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/67851143545014701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/67851143545014701'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2013/10/joomla-loadposition.html' title='Joomla loadposition'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-2318596436251021037</id><published>2013-09-23T00:31:00.001+02:00</published><updated>2013-09-23T00:42:13.055+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Joomla 2.5"/><category scheme="http://www.blogger.com/atom/ns#" term="Joomla Platform"/><title type='text'>Joomla email</title><content type='html'>Nelle nostre &lt;b&gt;estensioni Joomla&lt;/b&gt; è veramente molto semplice &lt;b&gt;inviare email&lt;/b&gt;. Utilizzando le api di &lt;b&gt;Joomla&lt;/b&gt;,&amp;nbsp;con poche righe di codice, possiamo mandare&amp;nbsp;&lt;b&gt;email&lt;/b&gt;&amp;nbsp;in tutta sicurezza, delegando a &lt;b&gt;Joomla&lt;/b&gt; tutto il lavoro.

&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Inviare una email con le api di Joomla&lt;/h2&gt;
Per prima cosa occorre creare un oggetto di tipo JMail:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$mailer = JFactory::getMailer();&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Il passo successivo è quello di inserire il &lt;b&gt;mittente&lt;/b&gt;, che andremo a recuperare dalla configurazione globale di &lt;b&gt;Joomla&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$config = JFactory::getConfig();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$sender = array(&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $config-&amp;gt;getValue(&#39;config.mailfrom&#39;),
&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $config-&amp;gt;getValue(&#39;config.fromname&#39;)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; );&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$mailer-&amp;gt;setSender($sender);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
successivamente inseriremo il &lt;b&gt;destinatario&lt;/b&gt;&amp;nbsp;della &lt;b&gt;email&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$mailer-&amp;gt;addRecipient(&#39;indirizzo@domain.it&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Se avete bisogno di inserire molti destinatari, basterà inserirli in un array:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$recipients = array(&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &#39;primo@domain.com&#39;, &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &#39;secondo@domain.com&#39;,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&#39;terzo@domain.com&#39;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$mailer-&amp;gt;addRecipient($recipients);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Ora con le funzioni setSubject e setBody imposteremo l&#39;&lt;b&gt;oggetto&lt;/b&gt; della &lt;b&gt;email&lt;/b&gt; e il &lt;b&gt;testo&lt;/b&gt; in essa contenuto:&amp;nbsp;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$mailer-&amp;gt;setSubject(&#39;Subject of the email&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$mailer-&amp;gt;setBody(&#39;Sample text&#39;);&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Se volte inviare una &lt;b&gt;mail&lt;/b&gt;&amp;nbsp;con testo in HTML basta scrivere:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$mailer-&amp;gt;isHTML(true);&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Mentre per la codifica:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$mailer-&amp;gt;Encoding = &#39;base64&#39;;
&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Volendo potete inserire un allegato con la funzione addAttachment. Per il percorso del file da allegare vi consiglio di utilizzare le &lt;a href=&quot;http://paolomosca.blogspot.it/2012/08/le-costanti-di-joomla.html&quot; target=&quot;_blank&quot;&gt;costanti di Joomla&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$mailer&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;-&amp;gt;addAttachment(&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;JPATH_COMPONENT.DS.&#39;files&#39;.DS.&#39;file.zip&#39;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Infine non ci rimane che inviare l&#39;&lt;b&gt;email&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$send = $mailer-&amp;gt;Send();&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;if ($send !== true) {&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; echo &#39;Error sending email: &#39;.$send-&amp;gt;message;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;}&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;else {&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;echo &#39;Mail sent&#39;;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;}&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/2318596436251021037/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2013/09/joomla-email.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/2318596436251021037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/2318596436251021037'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2013/09/joomla-email.html' title='Joomla email'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-4201879181157090252</id><published>2013-05-04T15:42:00.002+02:00</published><updated>2013-08-16T11:23:27.676+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Joomla 2.5"/><category scheme="http://www.blogger.com/atom/ns#" term="VirtueMart"/><title type='text'>Virtuemart: scegliere il gruppo clienti nel form di registrazione</title><content type='html'>&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
In &lt;b&gt;&lt;a href=&quot;http://virtuemart.net/&quot; target=&quot;_blank&quot;&gt;Virtuemart&lt;/a&gt;&lt;/b&gt; possiamo creare &lt;b&gt;gruppi clienti&lt;/b&gt; e assegnare gli utenti del &lt;b&gt;sito web&lt;/b&gt; al &lt;b&gt;gruppo cliente&lt;/b&gt; desiderato. Non ci è data però la possibilità di scegliere il nostro&amp;nbsp;&lt;b&gt;gruppo clienti&lt;/b&gt;&amp;nbsp;mentre stiamo compilando il &lt;b&gt;form di registrazione&lt;/b&gt;. In alcuni casi però è fondamentale avere questa possibilità direttamente nella fase di &lt;b&gt;registrazione&lt;/b&gt; al &lt;b&gt;sito web&lt;/b&gt;.
&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
Plugin VMGroup&lt;/h2&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_tmsXCZUGIy217CfxR2aEWO_gcW5rM2u9htx8YhgHCxccg23wdWQTWxo4VU0nGlvvvOyfppRvJvS3U6XxDscAVMBPumWC48hkg8wmqgUFfpn5GZkYt0EhMi9gC6M6G9a0F89FbJ774d7P/s1600/Virtuemart+gruppo+cliente+registrazione.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot; title=&quot;Virtuemart gruppo cliente nel form di registrazione&quot;&gt;&lt;img alt=&quot;Virtuemart gruppo cliente nel form di registrazione&quot; border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_tmsXCZUGIy217CfxR2aEWO_gcW5rM2u9htx8YhgHCxccg23wdWQTWxo4VU0nGlvvvOyfppRvJvS3U6XxDscAVMBPumWC48hkg8wmqgUFfpn5GZkYt0EhMi9gC6M6G9a0F89FbJ774d7P/s320/Virtuemart+gruppo+cliente+registrazione.jpg&quot; width=&quot;296&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://extensions.ventia.net/joomla/vmgroup-virtuemart-shopper-group-registration&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot; title=&quot;VMGroup&quot;&gt;&lt;img alt=&quot;VMGroup&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd3wyLuXLelWr8_O4C8e_HpEBjbGuSbjCBVG8dPnHKS7XFWiotZcT34yLgDA0oC4J4EwBpo0zaUuRzpx6YzCyRyEP20YQBxsG9Dbp6q5HhqCFnnF7hoXNBoa4Mb2H9wgNAK6k9d65UZRi7/s1600/download.png&quot; title=&quot;VMGroup&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Ho realizzato un&amp;nbsp;&lt;b&gt;plugin&lt;/b&gt;&amp;nbsp;che aggiunge un nuovo campo direttamente nel form di&amp;nbsp;&lt;b&gt;registrazione&lt;/b&gt;&amp;nbsp;(vedi immagine)&amp;nbsp;dando l&#39;opportunità all&#39;utente di selezionare il proprio&amp;nbsp;&lt;b&gt;gruppo cliente&lt;/b&gt;. &amp;nbsp;Questa operazione è possibile sia nel &lt;b&gt;form di registrazione&lt;/b&gt;&amp;nbsp;di &lt;a href=&quot;http://www.joomla.org/&quot; target=&quot;_blank&quot;&gt;Joomla&lt;/a&gt;&amp;nbsp;sia nella vista &lt;b&gt;Manutenzione Account Cliente&lt;/b&gt; di &lt;b&gt;Virtuemart&lt;/b&gt; grazie ad un &lt;u&gt;override&lt;/u&gt; da utilizzare assieme al &lt;b&gt;plugin&lt;/b&gt;.&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
Configurazione plugin VMGroup&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Scegli i &lt;b&gt;gruppi clienti&lt;/b&gt; che vuoi visualizzare durante la registrazione individuando i relativi ID. Come sicuramente saprai basta andare sulla maschera &lt;b&gt;Gruppi Clienti&lt;/b&gt; di &lt;b&gt;Virtuemart&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Abilitare il plugin ed inserire gli ID del punto sopra separati da un punto e virgola&lt;/li&gt;
&lt;li&gt;Caricare nella cartella html del &lt;b&gt;template&lt;/b&gt; che state utilizzando l&#39;override distribuito insieme al &lt;b&gt;plugin&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;a href=&quot;http://extensions.ventia.net/joomla/vmgroup-virtuemart-shopper-group-registration&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Scarica VMGroup&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/4201879181157090252/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2013/05/virtuemart-scegliere-il-gruppo-cliente.html#comment-form' title='2 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/4201879181157090252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/4201879181157090252'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2013/05/virtuemart-scegliere-il-gruppo-cliente.html' title='Virtuemart: scegliere il gruppo clienti nel form di registrazione'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_tmsXCZUGIy217CfxR2aEWO_gcW5rM2u9htx8YhgHCxccg23wdWQTWxo4VU0nGlvvvOyfppRvJvS3U6XxDscAVMBPumWC48hkg8wmqgUFfpn5GZkYt0EhMi9gC6M6G9a0F89FbJ774d7P/s72-c/Virtuemart+gruppo+cliente+registrazione.jpg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-5712871035145414690</id><published>2013-03-16T00:26:00.002+01:00</published><updated>2013-03-16T00:35:58.596+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="VirtueMart"/><title type='text'>Hosting VirtueMart Professionale</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixUHY4BeNbYmoVKOAO_Gpez3jCas85y2GdnplDKiFhohng8iyJ-dnustd0A7cbGFxgpS3VHuhmhAZtBGJ8R6_GdNZXzyfpFzFmEHuxtzI5afcBYK0UWKRDwteFFM6kVlpteO5G3GCeLNPS/s1600/hosting-virtuemart-professionale.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot; title=&quot;hosting virtuemart professionale&quot;&gt;&lt;img alt=&quot;hosting virtuemart professionale&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixUHY4BeNbYmoVKOAO_Gpez3jCas85y2GdnplDKiFhohng8iyJ-dnustd0A7cbGFxgpS3VHuhmhAZtBGJ8R6_GdNZXzyfpFzFmEHuxtzI5afcBYK0UWKRDwteFFM6kVlpteO5G3GCeLNPS/s1600/hosting-virtuemart-professionale.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Un &lt;b&gt;Hosting Professionale&lt;/b&gt; per il nostro &lt;b&gt;e-commerce&lt;/b&gt; sviluppato con&amp;nbsp;&lt;a href=&quot;http://virtuemart.net/&quot; target=&quot;_blank&quot;&gt;Virtuemart&lt;/a&gt;&amp;nbsp;è molto importante per non vanificare gli sforzi.&amp;nbsp;&lt;b&gt;VirtueMart&lt;/b&gt;&amp;nbsp;è un componente per &lt;a href=&quot;http://www.joomla.org/&quot; target=&quot;_blank&quot;&gt;Joomla&lt;/a&gt;&amp;nbsp;che vi può permettere di avere un &lt;b&gt;e-commerce&lt;/b&gt; completo ed efficace in pochissimo tempo.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Ma quale &lt;b&gt;hosting&lt;/b&gt;&amp;nbsp;scegliere per ospitare il nostro &lt;b&gt;sito web&lt;/b&gt;?&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
Caratteristiche di un hosting VirtueMart professionale&amp;nbsp;&lt;/h2&gt;
&lt;ol&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Performante&lt;/b&gt;. Sembrerà banale ma la &lt;b&gt;velocità&lt;/b&gt; di risposta di un &lt;b&gt;e-commerce&lt;/b&gt;&amp;nbsp;è decisiva. &lt;b&gt;VirtueMart&lt;/b&gt; richiede la giusta dose di potenza. &lt;b&gt;Hosting&lt;/b&gt;&amp;nbsp;condivisi con molti &lt;b&gt;siti web&lt;/b&gt;&amp;nbsp;su macchine con poca RAM e con processori datati possono essere la fortuna del vostro portafoglio ma la rovina del vostro business.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Sicuro&lt;/b&gt;. La sicurezza prima di tutto. Con i soldi non si scherza! &lt;b&gt;Joomla&lt;/b&gt; è uno dei &lt;b&gt;CMS&lt;/b&gt; più utilizzati e di conseguenza le persone che si divertono a trovare il modo di &quot;bucarlo&quot; sono molte. Oltre ad un server &lt;b&gt;sicuro&lt;/b&gt; (magari che utilizza &lt;a href=&quot;http://www.suphp.org/&quot; target=&quot;_blank&quot;&gt;suPHP&lt;/a&gt;&amp;nbsp;e altri accorgimenti) è importante avere un &lt;b&gt;hosting&lt;/b&gt;&amp;nbsp;con certificato &lt;b&gt;SSL&lt;/b&gt;. E&#39; difficile definire &lt;b&gt;sicuro&lt;/b&gt; un&amp;nbsp;&lt;b&gt;e-commerce&lt;/b&gt;&amp;nbsp;che non utilizza il protocollo HTTPS.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Backup giornalieri&lt;/b&gt;. Inutile che vi spieghi l&#39;importanza.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Accessi&lt;/b&gt; FTP e a PhpMyAdmin&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Spazio adeguato&lt;/b&gt;. Magari senza limiti.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Disponibilità&lt;/b&gt; da parte del fornitore del servizio. Mi è capitato di dover cambiare servizio di &lt;b&gt;hosting&lt;/b&gt; solo per il fatto che non riuscivo ad ottenere risposte su esigenze particolari di configurazione del &lt;b&gt;server&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Al prezzo di 129 € / anno&lt;/span&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
vi offriamo oltre a tutto questo una &lt;u&gt;installazione pronta all&#39;uso&lt;/u&gt;&amp;nbsp;di &lt;b&gt;Joomla&lt;/b&gt; + &lt;b&gt;VirtueMar&lt;/b&gt;t già perfettamente configurata con certificato SSL.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: medium; line-height: 25px;&quot;&gt;Se sei interessato&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;mailto:moscapaolo@gmail.com&quot; style=&quot;background-color: white; color: #092c59; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: large; line-height: 25px; text-decoration: none;&quot;&gt;contattami&lt;/a&gt;&lt;span style=&quot;background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: medium; line-height: 25px;&quot;&gt;&amp;nbsp;per la tua &lt;br /&gt;&lt;a href=&quot;mailto:moscapaolo@gmail.com&quot;&gt;nuova installazione di VirtueMart&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/5712871035145414690/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2013/03/hosting-virtuemart-professionale.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/5712871035145414690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/5712871035145414690'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2013/03/hosting-virtuemart-professionale.html' title='Hosting VirtueMart Professionale'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixUHY4BeNbYmoVKOAO_Gpez3jCas85y2GdnplDKiFhohng8iyJ-dnustd0A7cbGFxgpS3VHuhmhAZtBGJ8R6_GdNZXzyfpFzFmEHuxtzI5afcBYK0UWKRDwteFFM6kVlpteO5G3GCeLNPS/s72-c/hosting-virtuemart-professionale.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-1842819769455953320</id><published>2012-11-17T13:53:00.000+01:00</published><updated>2012-11-17T13:59:13.554+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Joomla 2.5"/><title type='text'>Posizione moduli Joomla 2.5</title><content type='html'>Per definire una nuova &lt;b&gt;posizione&lt;/b&gt; per i &lt;b&gt;moduli&lt;/b&gt;&amp;nbsp;di un &lt;b&gt;sito web&lt;/b&gt;&amp;nbsp;sviluppato con&amp;nbsp;&lt;b&gt;&lt;a href=&quot;http://www.joomla.org/&quot; target=&quot;_blank&quot;&gt;Joomla 2.5&lt;/a&gt;&lt;/b&gt; dobbiamo eseguire le seguenti operazioni:&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Inserire posizione nel file di definizione del template&lt;/h2&gt;
Nel file xml di definizione del &lt;b&gt;template&lt;/b&gt;, solitamente &lt;i&gt;templateDetails.xml&lt;/i&gt;, sono dichiarate le &lt;b&gt;posizioni modulo&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;de1&quot; style=&quot;background-color: #f9f9f9; background-image: none; border: 0px none white; font-size: 12px; line-height: 1.2em; overflow: hidden; padding: 0px; vertical-align: top;&quot;&gt;   &lt;span class=&quot;sc3&quot; style=&quot;color: #009900;&quot;&gt;&lt;span class=&quot;re1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;&amp;lt;positions&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;sc3&quot; style=&quot;color: #009900;&quot;&gt;&lt;span class=&quot;re1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;&amp;lt;position&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;debug&lt;span class=&quot;sc3&quot; style=&quot;color: #009900;&quot;&gt;&lt;span class=&quot;re1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;&amp;lt;/position&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;sc3&quot; style=&quot;color: #009900;&quot;&gt;&lt;span class=&quot;re1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;&amp;lt;position&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;position-0&lt;span class=&quot;sc3&quot; style=&quot;color: #009900;&quot;&gt;&lt;span class=&quot;re1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;&amp;lt;/position&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;sc3&quot; style=&quot;color: #009900;&quot;&gt;&lt;span class=&quot;re1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;&amp;lt;position&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;position-1&lt;span class=&quot;sc3&quot; style=&quot;color: #009900;&quot;&gt;&lt;span class=&quot;re1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;&amp;lt;/position&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;sc3&quot; style=&quot;color: #009900;&quot;&gt;&lt;span class=&quot;re1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;&amp;lt;position&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;position-2&lt;span class=&quot;sc3&quot; style=&quot;color: #009900;&quot;&gt;&lt;span class=&quot;re1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;&amp;lt;/position&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;sc3&quot; style=&quot;color: #009900;&quot;&gt;&lt;span class=&quot;re1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;&amp;lt;position&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;...&lt;span class=&quot;sc3&quot; style=&quot;color: #009900;&quot;&gt;&lt;span class=&quot;re1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;&amp;lt;/position&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;sc3&quot; style=&quot;color: #009900;&quot;&gt;&lt;span class=&quot;re1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;&amp;lt;position&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;position-14&lt;span class=&quot;sc3&quot; style=&quot;color: #009900;&quot;&gt;&lt;span class=&quot;re1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;&amp;lt;/position&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
   &lt;span class=&quot;sc3&quot; style=&quot;color: #009900;&quot;&gt;&lt;span class=&quot;re1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;&amp;lt;/positions&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
I nomi delle &lt;b&gt;posizioni&lt;/b&gt; non sono fissi ma possono variare da &lt;b&gt;template&lt;/b&gt; a &lt;b&gt;template&lt;/b&gt;. Inseriamo semplicemente un nuovo nome per la nostra&amp;nbsp;&lt;b&gt;posizione&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;sc3&quot; style=&quot;color: #009900; font-family: monospace; font-size: 12px; line-height: 14.966666221618652px; white-space: pre;&quot;&gt;&lt;span class=&quot;re1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;&amp;lt;position&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffcc; font-family: monospace; font-size: 12px; line-height: 14.966666221618652px; white-space: pre;&quot;&gt;myposition&lt;/span&gt;&lt;span class=&quot;sc3&quot; style=&quot;color: #009900; font-family: monospace; font-size: 12px; line-height: 14.966666221618652px; white-space: pre;&quot;&gt;&lt;span class=&quot;re1&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;&amp;lt;/position&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h2&gt;
&lt;br /&gt;Inserire il codice php per la nuova posizione&lt;/h2&gt;
Aprire il file sorgente&amp;nbsp;del &lt;b&gt;template&lt;/b&gt; selezionato (di solito &lt;i&gt;index.php&lt;/i&gt;). Aggiungere queste righe nella &lt;b&gt;posizione&lt;/b&gt; desiderata:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;de1&quot; style=&quot;background-color: #f9f9f9; background-image: none; border: 0px none white; font-size: 12px; line-height: 1.2em; overflow: hidden; padding: 0px; vertical-align: top;&quot;&gt;  &lt;span class=&quot;kw2&quot; style=&quot;font-weight: bold;&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot; style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;bool&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;re0&quot; style=&quot;color: #000088;&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot; style=&quot;color: #004000;&quot;&gt;countModules&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st_h&quot; style=&quot;color: blue;&quot;&gt;&#39;myposition&#39;&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sy1&quot; style=&quot;font-weight: bold;&quot;&gt;?&amp;gt;&lt;/span&gt;
    &amp;lt;div id=&quot;mydiv&quot;&amp;gt;
&lt;span class=&quot;xtra ln-xtra&quot; style=&quot;background-color: #ffffcc; display: block;&quot;&gt;      &amp;lt;jdoc:include type=&quot;modules&quot; name=&quot;myposition&quot; style=&quot;xhtml&quot; /&amp;gt;&lt;/span&gt;    &amp;lt;/div&amp;gt;
  &lt;span class=&quot;kw2&quot; style=&quot;font-weight: bold;&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot; style=&quot;color: #b1b100;&quot;&gt;endif&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot; style=&quot;font-weight: bold;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
Consiglio sempre di mettere la verifica che ci sia almeno un &lt;b&gt;modulo&lt;/b&gt; pubblicato nella nostra &lt;b&gt;posizione&lt;/b&gt;.&amp;nbsp;In questo modo evitiamo di inserire un &lt;i&gt;div&lt;/i&gt; vuoto se non abbiamo &lt;b&gt;moduli&lt;/b&gt;&amp;nbsp;in quella &lt;b&gt;posizione&lt;/b&gt;.&lt;br /&gt;
La direttiva &lt;i&gt;jdoc:include&lt;/i&gt; serve a definire il segnaposto che il motore di rendering di &lt;b&gt;Joomla&lt;/b&gt; andrà a sostituire con i &lt;b&gt;moduli&lt;/b&gt; associati alla &lt;b&gt;posizione&lt;/b&gt; specifica (&lt;i&gt;myposition&lt;/i&gt; in questo caso).
Il parametro &lt;i&gt;style&lt;/i&gt;&amp;nbsp;serve ad indicare le varianti al codice html di generazione del &lt;b&gt;modulo&lt;/b&gt;. Esso può assumere i seguenti valori standard: none, table, horz, xhtml, rounded e outline, definiti in &lt;i&gt;templates/system/html/modules.php&lt;/i&gt;, oppure valori arbitrari definiti con un &lt;i&gt;override&lt;/i&gt; nel file &lt;i&gt;html/modules.php&lt;/i&gt; specifico del &lt;b&gt;template&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Definiamo lo stile del modulo&lt;/h2&gt;
Modifichiamo il foglio di stile associato al &lt;b&gt;template&lt;/b&gt;, solitamente &lt;i&gt;/templates/nome del template/css/position.css&lt;/i&gt;, inserendo le regole necessarie:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;de1&quot; style=&quot;background-color: #f9f9f9; background-image: none; border: 0px none white; font-size: 12px; line-height: 1.2em; overflow: hidden; padding: 0px; vertical-align: top;&quot;&gt;&lt;span class=&quot;re0&quot; style=&quot;color: #cc00cc;&quot;&gt;#mydiv&lt;/span&gt; &lt;span class=&quot;br0&quot; style=&quot;color: #00aa00;&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;kw1&quot; style=&quot;font-weight: bold;&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #00aa00;&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re0&quot; style=&quot;color: #cc00cc;&quot;&gt;#000000&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #00aa00;&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot; style=&quot;font-weight: bold;&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #00aa00;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #993333;&quot;&gt;90px&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #00aa00;&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot; style=&quot;color: #00aa00;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
Non resta che creare un nuovo &lt;b&gt;modulo&lt;/b&gt; dal backend di &lt;b&gt;Joomla&lt;/b&gt; ed assegnarlo alla &lt;b&gt;posizione&lt;/b&gt; appena creata.</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/1842819769455953320/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2012/11/posizione-moduli-joomla-25.html#comment-form' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/1842819769455953320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/1842819769455953320'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2012/11/posizione-moduli-joomla-25.html' title='Posizione moduli Joomla 2.5'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-2885918161002604308</id><published>2012-08-23T21:22:00.001+02:00</published><updated>2012-08-23T21:28:21.873+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><title type='text'>Call-time pass-by-reference is deprecated</title><content type='html'>&lt;b&gt;Deprecated: Call-time pass-by-reference has been deprecated&lt;/b&gt; in filename.php&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
A partire dalla versione 5.3.0 di&amp;nbsp;&lt;a href=&quot;http://www.php.net/&quot; target=&quot;_blank&quot;&gt;PHP&lt;/a&gt;&amp;nbsp;è stato &lt;b&gt;deprecato&lt;/b&gt; il &lt;b&gt;passaggio per riferimento&lt;/b&gt; quando si &lt;b&gt;chiama un metodo o una funzione&lt;/b&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
l&#39;utilizzo dell&#39;&lt;b&gt;operatore &amp;amp;&lt;/b&gt; nelle chiamate dei vostri metodi - esempio:&amp;nbsp;metodo(&amp;amp;$a) - genera il messaggio di &lt;b&gt;warning&lt;/b&gt; mostrato all&#39;inizio.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
In &lt;b&gt;PHP 5&lt;/b&gt;&amp;nbsp;infatti gli oggetti vengono sempre passati per &lt;b&gt;reference&lt;/b&gt;&amp;nbsp;(per riferimento) e quindi in questo caso l&#39;operatore &amp;amp; non serve. Per i tipi di dati primitivi basta indicarlo nella definizione del metodo.&lt;br /&gt;
Ricordo infatti che dalla versione&amp;nbsp;5.3.0 di PHP è stato&amp;nbsp;&lt;b&gt;deprecato&lt;/b&gt;&amp;nbsp;il&amp;nbsp;&lt;b&gt;passaggio per riferimento&lt;/b&gt;&amp;nbsp;nella&amp;nbsp;&lt;b&gt;chiamata di un metodo&lt;/b&gt;&amp;nbsp;ma non certo il &lt;b&gt;passaggio per riferimento&lt;/b&gt;. Vediamo un esempio:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;function functionA(&amp;amp;$var) {&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; $var++;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;}&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;functionB($var)
{&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; $var++;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;}&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$n = 1;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;// corretto&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;functionA($n);&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;// deprecated&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;// functionB(&amp;amp;$n);&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;echo $n; // output 2&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
In entrambi i casi si vuole che la variabile $n venga incrementata dal metodo ma il secondo modo (commentato per non far attivare il warning) è scorretto.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Se stai utilizzando codice di terze parti ti può capitare che venga ancora utilizzato il &lt;b&gt;passaggio per riferimento a tempo di chiamata&lt;/b&gt;. Per far funzionare la tua applicazione&amp;nbsp;puoi intervenire sul php.ini attraverso la seguente direttiva&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;i&gt;allow_call_time_pass_reference = on&lt;/i&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Questa però deve essere presa come una soluzione temporanea in attesa della versione corretta.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/2885918161002604308/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2012/08/call-time-pass-by-reference-is.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/2885918161002604308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/2885918161002604308'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2012/08/call-time-pass-by-reference-is.html' title='Call-time pass-by-reference is deprecated'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-2115532226007051467</id><published>2012-08-09T21:48:00.002+02:00</published><updated>2012-08-09T21:56:56.306+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Joomla 1.5"/><title type='text'>Le Costanti di Joomla</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Le &lt;b&gt;costanti&lt;/b&gt;&amp;nbsp;che&amp;nbsp;&lt;b&gt;&lt;a href=&quot;http://www.joomla.org/&quot; target=&quot;_blank&quot;&gt;Joomla&lt;/a&gt;&lt;/b&gt; ci mette a disposizione possono risultare molto utili quando scriviamo i nostri &lt;b&gt;componenti&lt;/b&gt;.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Di seguito riporto un elenco non esaustivo delle &lt;b&gt;costanti&lt;/b&gt;&amp;nbsp;che possiamo utilizzare nelle nostre &lt;b&gt;estensioni&lt;/b&gt; di &lt;b&gt;Joomla&lt;/b&gt;.&lt;/div&gt;
&lt;h2&gt;
&lt;br /&gt;&amp;nbsp;Costanti legate al percorso&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;DS&lt;/b&gt;: il separatore di directory (/), garantisce la portabilità tra sistemi operativi diversi. Come ben sapete Windows utilizza il carattere \ a differenza di linux /&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JPATH_ADMINISTRATOR&lt;/b&gt;: il percorso base dell’applicazione JAdministrator (/joomla/administrator)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JPATH_BASE&lt;/b&gt;: il percorso base dell&#39;applicazione corrente: assume valori diversi a seconda dell’applicazione in uso (JSite, JAdministrator, JInstallation o altre personalizzate)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JPATH_COMPONENT&lt;/b&gt;: il percorso verso la directory del componente in uso (/joomla/components/com_in_uso)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JPATH_COMPONENT_ADMINISTRATOR&lt;/b&gt;: il percorso verso la directory lato admin del componente in uso (/joomla/administrator/components/com_in_uso)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JPATH_COMPONENT_SITE&lt;/b&gt;: il percorso verso la directory lato sito del componente in uso (/joomla/components/com_in_uso)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JPATH_CONFIGURATION&lt;/b&gt;: il percorso della directory che contiene il file di configurazione (/joomla)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JPATH_INSTALLATION&lt;/b&gt;: il percorso della applicazione di installazione JInstallation (/joomla/installation)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JPATH_CACHE&lt;/b&gt;: il percorso della directory cache (/joomla/cache)&amp;nbsp;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JPATH_LIBRARIES&lt;/b&gt;: il percorso della cartella libraries (/joomla/libraries)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JPATH_PLUGINS&lt;/b&gt;: il percorso della cartella plugins (/joomla/plugins)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JPATH_ROOT&lt;/b&gt;: il percorso principale del framework Joomla (/joomla)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JPATH_SITE&lt;/b&gt;: il percorso base dell&#39;applicazione JSite (/joomla)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JPATH_THEMES&lt;/b&gt;: il percorso della cartella templates (/joomla/templates)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
&lt;br /&gt;&amp;nbsp;Costanti legate alla data&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;DATE_FORMAT_LC&lt;/b&gt;: mostra la data nella forma Giovedì, 09 Agosto 2012&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DATE_FORMAT_LC2&lt;/b&gt;: mostra la data e l’ora nella forma Giovedì,&amp;nbsp;09&amp;nbsp;Agosto&amp;nbsp;2012&amp;nbsp;10:00&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DATE_FORMAT_LC3&lt;/b&gt;: mostra la data nella forma 09 Agosto 2012&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DATE_FORMAT_LC4&lt;/b&gt;: mostra la data nella forma 09:08:12&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Il mio consiglio è di utilizzare nelle operazioni di include e require le &lt;b&gt;costanti&lt;/b&gt;&amp;nbsp;messe a disposizione dal&amp;nbsp;&lt;b&gt;framework&lt;/b&gt; di &lt;b&gt;Joomla&lt;/b&gt;&amp;nbsp;in modo da garantire la corretta portabilità dei vostri componenti.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/2115532226007051467/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2012/08/le-costanti-di-joomla.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/2115532226007051467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/2115532226007051467'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2012/08/le-costanti-di-joomla.html' title='Le Costanti di Joomla'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-8890351201706702596</id><published>2012-04-21T17:38:00.004+02:00</published><updated>2012-04-21T17:51:53.500+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Symfony"/><title type='text'>Symfony 2: comandi del framework</title><content type='html'>&lt;a href=&quot;http://symfony.com/&quot; target=&quot;_blank&quot;&gt;Symfony 2&lt;/a&gt;&amp;nbsp;è un &lt;b&gt;framework MVC&lt;/b&gt;&amp;nbsp;(e non solo!) sviluppato in &lt;b&gt;PHP&lt;/b&gt;. Riporto di seguito i &lt;b&gt;comandi&lt;/b&gt;&amp;nbsp;più utili per velocizzare lo &lt;b&gt;sviluppo &lt;/b&gt;(per eseguire questi &lt;b&gt;comandi&lt;/b&gt; spostarsi nella directory &lt;b&gt;app&lt;/b&gt;&amp;nbsp;della tua &lt;b&gt;applicazione&lt;/b&gt; sviluppata con&amp;nbsp;&lt;b&gt;Symfony 2&lt;/b&gt;):&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;php console generate:bundle&lt;/i&gt;&amp;nbsp;Genera la struttura delle directory di un nuovo &lt;b&gt;bundle&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;php console gen:doctrine:entity&amp;nbsp;&lt;/i&gt;Genera una nuova entità&lt;/li&gt;
&lt;li&gt;&lt;i&gt;php console doctrine:database:create&lt;/i&gt;&amp;nbsp;Crea il database per la tua applicazione&lt;/li&gt;
&lt;li&gt;&lt;i&gt;php console doctrine:schema:update --dump-sql&lt;/i&gt;&amp;nbsp;Genera le query per creare o aggiornare le tabelle corrispondenti alle entità di &lt;b&gt;Symfony&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;php console doctrine:schema:update --force&lt;/i&gt;&amp;nbsp;Aggiorna il database con le query ottenute con il &lt;b&gt;comando&lt;/b&gt; precedente&lt;/li&gt;
&lt;li&gt;&lt;i&gt;php console doctrine:generate:crud&lt;/i&gt;&amp;nbsp;Data una entity, permette di generare il &lt;b&gt;controller&lt;/b&gt; e le relative &lt;b&gt;viste&lt;/b&gt; &amp;nbsp;per effettuare le operazioni di creazione, lettura, aggiornamento e cancellazione di un elemento.&lt;/li&gt;
&lt;li&gt;&lt;i&gt;php console doctrine:generate:entities&lt;/i&gt;&amp;nbsp;&lt;i&gt;XXX&lt;/i&gt;&amp;nbsp;Genera i metodi &lt;b&gt;getter&lt;/b&gt; e &lt;b&gt;setter&lt;/b&gt; per le entità del namespace indicato (XXX). Notiamo che è possibile specificare anche una singola entità.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;
Questi sono solo alcuni dei&amp;nbsp;&lt;b&gt;comandi&lt;/b&gt;&amp;nbsp;che&amp;nbsp;&lt;b&gt;Symfony 2&lt;/b&gt;&amp;nbsp;mette a disposizione. Rimando alla &lt;a href=&quot;http://symfony.com/doc/current/index.html&quot; target=&quot;_blank&quot;&gt;guida ufficiale&lt;/a&gt; per una panoramica completa.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/8890351201706702596/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2012/04/symfony-2-comandi-del-framework.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/8890351201706702596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/8890351201706702596'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2012/04/symfony-2-comandi-del-framework.html' title='Symfony 2: comandi del framework'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-7329051953435669560</id><published>2012-03-23T10:18:00.000+01:00</published><updated>2012-03-23T10:18:23.240+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Joomla 2.5"/><title type='text'>Joomla 2.5 Parametri del componente nel modello</title><content type='html'>Leggere i &lt;b&gt;parametri&lt;/b&gt; di un &lt;b&gt;componente&lt;/b&gt; dentro il &lt;b&gt;modello&lt;/b&gt; è molto semplice con&amp;nbsp;&lt;b&gt;&lt;a href=&quot;http://www.joomla.org/&quot; target=&quot;_blank&quot;&gt;Joomla 2.5&lt;/a&gt;&lt;/b&gt;. Vediamo come fare:&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Importare l&#39;helper&lt;/h2&gt;Importiamo nel nostro &lt;b&gt;modello&lt;/b&gt; la seguente &lt;b&gt;classe&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;jimport(&#39;joomla.application.component.helper&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Recuperiamo l&#39;oggetto JRegistry&lt;/h2&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;$params = JComponentHelper::getParams(&#39;nome_componente&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Dove nome_componente è il nome del vostro &lt;b&gt;componente&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;h2&gt;Chiediamo il nostro parametro&lt;/h2&gt;$myParameter = $params-&amp;gt;get(&#39;myParameter&#39;);</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/7329051953435669560/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2012/03/joomla-25-parametri-del-componente-nel.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/7329051953435669560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/7329051953435669560'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2012/03/joomla-25-parametri-del-componente-nel.html' title='Joomla 2.5 Parametri del componente nel modello'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-8608247670438833468</id><published>2012-01-06T12:27:00.002+01:00</published><updated>2013-08-12T09:48:14.086+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Joomla 1.7"/><category scheme="http://www.blogger.com/atom/ns#" term="Joomla 2.5"/><title type='text'>Joomla: scegliere il gruppo utente durante la registrazione</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Scegliere il proprio&amp;nbsp;&lt;b&gt;gruppo utente&lt;/b&gt;&amp;nbsp;durante la &lt;b&gt;registrazione&lt;/b&gt;&amp;nbsp;ad un &lt;b&gt;sito web&lt;/b&gt;&amp;nbsp;può diventare una esigenza importante. &lt;b&gt;&lt;a href=&quot;http://www.joomla.org/&quot; target=&quot;_blank&quot;&gt;Joomla&lt;/a&gt;&lt;/b&gt;&amp;nbsp;dalla versione 1.6 in poi ha introdotto un&#39;ottimo sistema per la gestione dei &lt;b&gt;gruppi utenti&lt;/b&gt; e dei &lt;b&gt;permessi&lt;/b&gt;,&amp;nbsp;di cui abbiamo già parlato in &lt;a href=&quot;http://paolomosca.blogspot.com/2011/02/joomla-16-permessi-e-utenti-acl.html&quot; target=&quot;_blank&quot;&gt;joomla 1.6: permessi e utenti (ACL)&lt;/a&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Ricordiamo però che bisogna assegnare manualmente ogni utente al relativo gruppo dal backend di&amp;nbsp;&lt;b&gt;Joomla&lt;/b&gt;. In alcuni casi questo può risultare scomodo. Infatti in alcuni &lt;b&gt;siti web&lt;/b&gt; è l&#39;&lt;b&gt;utente&lt;/b&gt; stesso che deve decidere a quale&lt;b&gt; gruppo&lt;/b&gt; appartenere e questo fin dalla fase di &lt;b&gt;registrazione&lt;/b&gt; al &lt;b&gt;sito web&lt;/b&gt;.&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;
Plugin jgroup&lt;/h2&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Ho realizzato un semplice &lt;b&gt;plugin&lt;/b&gt; che implementa questa funzionalità andando ad aggiungere un nuovo campo direttamente nel form di &lt;b&gt;registrazione &lt;/b&gt;dove l&#39;utente può selezionare il &lt;b&gt;gruppo&lt;/b&gt;&amp;nbsp;desiderato. Il &lt;b&gt;plugin&lt;/b&gt;, attraverso un semplice parametro da configurare, permette di scegliere quali &lt;b&gt;gruppi&lt;/b&gt; mostrare agli &lt;b&gt;utenti&lt;/b&gt; semplicemente elencando gli id dei &lt;b&gt;gruppi&lt;/b&gt;&amp;nbsp;stessi.&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;a href=&quot;http://extensions.ventia.net/joomla/jgroup-plugin&quot; target=&quot;_blank&quot;&gt;plg_jgroup.zip&lt;/a&gt;&lt;/b&gt;</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/8608247670438833468/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2012/01/joomla-scegliere-il-gruppo-utente.html#comment-form' title='12 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/8608247670438833468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/8608247670438833468'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2012/01/joomla-scegliere-il-gruppo-utente.html' title='Joomla: scegliere il gruppo utente durante la registrazione'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-4323853735109914982</id><published>2011-10-22T18:27:00.000+02:00</published><updated>2012-09-16T11:35:28.677+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Shop Migrator"/><category scheme="http://www.blogger.com/atom/ns#" term="VirtueMart"/><title type='text'>VirtueMart: importare prodotti</title><content type='html'>&lt;b&gt;Importare&lt;/b&gt; i &lt;b&gt;prodotti&lt;/b&gt; su &lt;b&gt;&lt;a href=&quot;http://virtuemart.net/&quot; target=&quot;_blank&quot;&gt;VirtueMart&lt;/a&gt;&lt;/b&gt; da un &lt;b&gt;software gestionale&lt;/b&gt; oppure da un qualsiasi sistema esterno a &lt;b&gt;VirtueMart&lt;/b&gt; può diventare un&#39;operazione complicata, soprattutto se in presenza di un elevato numero di &lt;b&gt;prodotti&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Come importare allora i propri prodotti su VirtueMart?&lt;/h2&gt;
&lt;br /&gt;
La risposta è semplice: &lt;b&gt;&lt;a href=&quot;http://paolomosca.blogspot.com/p/shop-migrator-per-virtuemart.html&quot;&gt;Shop Migrator&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghMyH56M3-0cm5TVA6AHdUiXKMLan3rJLH8t6Y1u4NoDKaskzCvtHwVjqI5YN7E_ahgHz8DuCIlJMvB04PZas_f1Ti44a6v9vQ7sXQWAYDVYpF3x9lo0sxv3brAqp6T1rwLBP9XzsjgxFg/s1600/Shop+Migrator.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;VirtueMart importare prodotti con Shop Migrator&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghMyH56M3-0cm5TVA6AHdUiXKMLan3rJLH8t6Y1u4NoDKaskzCvtHwVjqI5YN7E_ahgHz8DuCIlJMvB04PZas_f1Ti44a6v9vQ7sXQWAYDVYpF3x9lo0sxv3brAqp6T1rwLBP9XzsjgxFg/s1600/Shop+Migrator.jpg&quot; title=&quot;VirtueMart importare prodotti con Shop Migrator&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Shop Migrator&lt;/b&gt;&amp;nbsp;&lt;b&gt;importa&lt;/b&gt; i vostri &lt;b&gt;prodotti&lt;/b&gt; su &lt;b&gt;VirtueMart&lt;/b&gt;&amp;nbsp;prendendo i dati dal vostro &lt;b&gt;gestionale&lt;/b&gt; oppure da qualsiasi altra fonte scelta da voi.&lt;br /&gt;
&lt;b&gt;Shop Migrator&lt;/b&gt; importa già i &lt;b&gt;prodotti&lt;/b&gt; da importanti &lt;b&gt;gestionali&lt;/b&gt; ma se avete l&#39;esigenza di utilizzare database sviluppati da voi oppure fogli di excel etc... possiamo &lt;u&gt;rapidamente&lt;/u&gt; realizzare il codice per interfacciarci alla vostra sorgente dati.&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, &#39;Times New Roman&#39;, serif; font-size: large;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 25px;&quot;&gt;Se sei interessato&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 25px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 25px;&quot;&gt;&lt;a href=&quot;mailto:moscapaolo@gmail.com&quot; style=&quot;color: #092c59; text-decoration: none;&quot;&gt;contattami&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 25px;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
N.B. Per migrazioni da gestionali attualmente non previsti il prezzo sarà da concordare</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/4323853735109914982/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2011/10/virtuemart-importare-prodotti.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/4323853735109914982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/4323853735109914982'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2011/10/virtuemart-importare-prodotti.html' title='VirtueMart: importare prodotti'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghMyH56M3-0cm5TVA6AHdUiXKMLan3rJLH8t6Y1u4NoDKaskzCvtHwVjqI5YN7E_ahgHz8DuCIlJMvB04PZas_f1Ti44a6v9vQ7sXQWAYDVYpF3x9lo0sxv3brAqp6T1rwLBP9XzsjgxFg/s72-c/Shop+Migrator.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-8954860828426575194</id><published>2011-10-08T13:39:00.005+02:00</published><updated>2011-10-08T13:53:55.657+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Joomla 1.5"/><title type='text'>Le Breadcrumbs in Joomla 1.5</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Le&amp;nbsp;&lt;b&gt;breadcrumbs&lt;/b&gt;&amp;nbsp;(letteralmente &lt;b&gt;briciole di pane&lt;/b&gt;) sono dei link presenti nell&#39;interfaccia utente che permettono di risalire alle &lt;b&gt;pagine web&lt;/b&gt;&amp;nbsp;visitate in precedenza. Infatti le&amp;nbsp;&lt;b&gt;breadcrumbs&lt;/b&gt;&amp;nbsp;tengono traccia delle varie pagine che l&#39;utente ha visualizzato durante la navigazione nel &lt;b&gt;sito&lt;/b&gt;&amp;nbsp;(ricordate Pollicino che lasciava una scia di briciole di pane lungo il suo cammino per poterlo ripercorrere all&#39;indietro?)&lt;/div&gt;&lt;br /&gt;
&lt;h2&gt;Le breadcrumbs in Joomla&lt;/h2&gt;Ecco un&#39;esempio di&amp;nbsp;&lt;b&gt;breadcrumbs&lt;/b&gt;&amp;nbsp;in &lt;b&gt;&lt;a href=&quot;http://www.joomla.org/&quot; target=&quot;_blank&quot;&gt;Joomla&lt;/a&gt;&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0Xj6RhaoIPXIVsJwHGMALplsvJUZda0xowYc1LlTYAj3lVcaDb5zWr3FHupQ0fYRx3jaXukeiqGCZd2y4DjcL0WKcYiEWrxfXknbiujCBdYtKOX0oOoNsZb6ETDYYeXkxlUFX259XrVQy/s1600/breadcrumbs++joomla.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;breadcrumbs joomla&quot; border=&quot;0&quot; height=&quot;155&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0Xj6RhaoIPXIVsJwHGMALplsvJUZda0xowYc1LlTYAj3lVcaDb5zWr3FHupQ0fYRx3jaXukeiqGCZd2y4DjcL0WKcYiEWrxfXknbiujCBdYtKOX0oOoNsZb6ETDYYeXkxlUFX259XrVQy/s400/breadcrumbs++joomla.jpg&quot; title=&quot;breadcrumbs joomla&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;La freccia indica le nostre &lt;b&gt;briciole di pane&lt;/b&gt;.&amp;nbsp;L&#39;utente può così facilmente capire dove si trova all&#39;interno del sito e come ci è arrivato.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Joomla&lt;/b&gt; permette di realizzare questa funzione attraverso il suo &lt;b&gt;modulo Breadcrumbs&lt;/b&gt;&amp;nbsp;fornito in ogni installazione, ma può capitare che in qualche componente esterno non venga visualizzato correttamente il percorso. Vediamo come andare a rimediare:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Dobbiamo innanzitutto recuperare il&amp;nbsp;&lt;b&gt;pathway&lt;/b&gt; corrente andandolo a chiedere all&#39;oggetto globale&amp;nbsp;&lt;b&gt;$mainframe&lt;/b&gt;:&lt;/div&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;$pathway = &amp;amp;$mainframe-&amp;gt;getPathWay();&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
$pathway è un oggetto della classe &lt;u&gt;&lt;a href=&quot;http://api.joomla.org/Joomla-Framework/Application/JPathway.html&quot; target=&quot;_blank&quot;&gt;JPathway&lt;/a&gt;&lt;/u&gt;&lt;br /&gt;
Per aggiungere il nome della&lt;b&gt; pagina web&lt;/b&gt; al percorso corrente basta scrivere:&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;$pathway-&amp;gt;addItem($title);&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
dove $title conterrà il nome della pagina corrente. Ecco come inserire anche il link della pagina:&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;$pathway-&amp;gt;addItem($title, $link);&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
dove $link è la variabile che conterrà il vostro link. Se volete cancellare tutte le&lt;b&gt; briciole di pane&lt;/b&gt; e ripartire dalla home basta scrivere:&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;$pathway-&amp;gt;setPathway(array());&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
e&amp;nbsp;poi inserirete con addItem i vostri nuovi titoli.</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/8954860828426575194/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2011/10/le-breadcrumbs-in-joomla-15.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/8954860828426575194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/8954860828426575194'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2011/10/le-breadcrumbs-in-joomla-15.html' title='Le Breadcrumbs in Joomla 1.5'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0Xj6RhaoIPXIVsJwHGMALplsvJUZda0xowYc1LlTYAj3lVcaDb5zWr3FHupQ0fYRx3jaXukeiqGCZd2y4DjcL0WKcYiEWrxfXknbiujCBdYtKOX0oOoNsZb6ETDYYeXkxlUFX259XrVQy/s72-c/breadcrumbs++joomla.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-3339977644314979384</id><published>2011-07-21T12:59:00.000+02:00</published><updated>2011-07-21T12:59:14.259+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Joomla 1.7"/><category scheme="http://www.blogger.com/atom/ns#" term="Joomla Platform"/><title type='text'>Joomla 1.7</title><content type='html'>&lt;b&gt;&lt;a href=&quot;http://www.joomla.org/&quot; target=&quot;_blank&quot;&gt;Joomla 1.7&lt;/a&gt;,&lt;/b&gt;&amp;nbsp;rilasciato il 19/07/2011 a sei mesi di distanza da &lt;b&gt;Joomla &lt;/b&gt;1.6, propone una interessante novità per gli sviluppatori: la separazione della&amp;nbsp;&lt;b&gt;&lt;a href=&quot;https://github.com/joomla/joomla-platform&quot; target=&quot;_blank&quot;&gt;Joomla Platform&lt;/a&gt;&lt;/b&gt;&amp;nbsp;dal resto del &lt;b&gt;CMS&lt;/b&gt;. La &lt;b&gt;Joomla Platform &lt;/b&gt;non è altro che un &lt;b&gt;PHP Application Framework&lt;/b&gt; che potrà essere utilizzato&amp;nbsp;indipendentemente dal Content Manager e dal suo core: ciò significa che anche applicazioni di terze parti potranno basarsi su &lt;b&gt;Joomla&lt;/b&gt;.&lt;br /&gt;
Nella versione &lt;b&gt;Joomla 1.7&lt;/b&gt;&amp;nbsp;è stata inoltre aggiunta la possibilità di tradurre in lingue diverse le varie voci di menù senza dover ricorrere a estensioni esterne.&lt;br /&gt;
&lt;b&gt;Joomla 1.7,&lt;/b&gt;&amp;nbsp;al pari di &lt;b&gt;Joomla 1.6&lt;/b&gt;, è una versione di passaggio verso &lt;b&gt;Joomla 1.8&lt;/b&gt;&amp;nbsp;che diventerà la prossima &lt;b&gt;versione a lungo termine&lt;/b&gt;&amp;nbsp;ed andrà a sostituire definitivamente la vecchia e collaudata versione 1.5.</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/3339977644314979384/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2011/07/joomla-17.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/3339977644314979384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/3339977644314979384'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2011/07/joomla-17.html' title='Joomla 1.7'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-120801185238072063</id><published>2011-07-12T10:17:00.016+02:00</published><updated>2011-07-12T10:31:26.502+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Joomla 1.5"/><title type='text'>Scrivere plugin per Joomla (II parte)</title><content type='html'>Nell&#39;articolo &lt;a href=&quot;http://paolomosca.blogspot.com/2011/06/scrivere-plugin-per-joomla-i-parte.html&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;Scrivere plugin per joomla (I parte)&lt;/b&gt;&lt;/a&gt;&amp;nbsp;abbiamo visto i vari tipi di &lt;b&gt;plugin&lt;/b&gt; presenti in &lt;a href=&quot;http://www.joomla.org/&quot; target=&quot;_blank&quot;&gt;Joomla&lt;/a&gt; e i relativi eventi che possono essere utilizzati in ogni classe di&amp;nbsp;&lt;b&gt;plugin&lt;/b&gt;. Oggi andremo a scrivere un&amp;nbsp;&lt;b&gt;plugin&lt;/b&gt; di prova che chiameremo &lt;i&gt;MyString&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;File necessari in un plugin&lt;/h2&gt;Il &lt;b&gt;plugin&lt;/b&gt;&amp;nbsp;in questione appartiene alla tipologia &quot;&lt;i&gt;content&lt;/i&gt;&quot; e ci permetterà di inserire una stringa a piacere ogni volta che inseriremo il segnaposto {mystring} in un contenuto di &lt;b&gt;Joomla&lt;/b&gt;.&lt;br /&gt;
Il numero di files minimi necessari per la creazione di un plugin sono due:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;mystring.php&lt;/li&gt;
&lt;li&gt;mystring.xml&lt;/li&gt;
&lt;/ol&gt;Nel nostro caso ci limiteremo a questi due soli file.&amp;nbsp;Ricordiamo che in caso di bisogno, possiamo creare una cartella (nel nostro esempio &quot;&lt;i&gt;mystring&lt;/i&gt;&quot;) in cui collocare altri file (php, immagini o javascript), specificando la cartella aggiuntiva nel file mystring.xml.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Il cuore del Plugin mystring.php&lt;/h2&gt;Nel file&amp;nbsp;mystring.php inseriremo il codice che verrà eseguito all&#39;evento &quot;onPrepareContent&quot;, ossia prima che il contenuto di un articolo (o di un modulo) venga stampato. Questo ci permetterà di trovare eventuali occorrenze della stringa {mystring} e di sostiturila con del codice html.&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;// impediamo l&#39;accesso diretto allo script&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;defined( &#39;_JEXEC&#39; ) or die( &#39;Restricted access&#39; );&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;jimport( &#39;joomla.plugin.plugin&#39; );&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;class plgContentMystring extends JPlugin&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; /**&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; * Costruttore&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; * Chiamiamo il costruttore della classe genitrice per inizializzare il plugin&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; */&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; function plgContent&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;Mystring&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;( &amp;amp;$subject, $params )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; parent::__construct( $subject, $params );&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; /**&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; * MyString prepare content method&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; *&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; * Questo metodo viene chiamato da Joomla prima che il contenuto viene visualizzato&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; *&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; * @param   oggetto contenente l&#39;articolo    The article object.  Note $article-&amp;gt;text is also available&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; * @param   oggetto contenente i parametri del plugin&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; * @limitstart   il numero di pagina, a noi questo non interessa qui&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; */&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; function onPrepareContent( &amp;amp;$article, &amp;amp;$params, $limitstart )&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; global $mainframe;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Se il plugin è attivato e se viene trovata la stringa {mystring} all&#39;interno del contenuto&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if ($this-&amp;gt;params-&amp;gt;get( &#39;enabled&#39;, 1 ) &amp;amp;&amp;amp; strripos($article-&amp;gt;text, &quot;{mystring}&quot;) !== false)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Recupero il testo da inserire&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $about_text = $this-&amp;gt;params-&amp;gt;get(&#39;about_text&#39;, NULL);&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Controllo HTML&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(intval($this-&amp;gt;params-&amp;gt;get(&#39;htmlentities&#39;, NULL)) == 1) $about_text = htmlentities($about_text, ENT_QUOTES);&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Recupero il tag selezionato&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $tag = $this-&amp;gt;params-&amp;gt;get(&#39;tag&#39;, &#39;blockquote&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Recupero la classe css&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $class = $this-&amp;gt;params-&amp;gt;get(&#39;css_class&#39;, NULL);&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Se la classe è vuota non ho bisogno di inserire l&#39;attributo class&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $output = ($class != &#39;&#39;) ? &#39; class=&quot;&#39;. $class .&#39;&quot;&#39; : &quot;&quot; ;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Inserisco il testo dentro il tag con la relativa classe&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $about_text = &#39;&amp;lt;&#39; . $tag . $output .&#39;&amp;gt;&#39; . $about_text . &#39;&#39;;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Rimuovo eventuale tag&amp;nbsp;inseriti automaticamente dall&#39;editor&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $article-&amp;gt;text = str_replace(&quot;{mystring}&quot;, &quot;{&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;mystring&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;}&quot;, $article-&amp;gt;text);&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Effettuo la sostituzione finale&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $article-&amp;gt;text = str_replace(&quot;{&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;mystring&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;}&quot;, $about_text, $article-&amp;gt;text);&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return true;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else return false;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Anche se i commenti nel codice sono abbastanza espliciti, è necessario fare delle precisazioni:&lt;br /&gt;
per convenzione il nome della classe deve essere: plg + Tipologia plugin (prima lettera maiuscola) + Nome plugin (prima lettera maiuscola), quindi nel nostro caso plgContentMystring.&lt;br /&gt;
La prima funzione della classe è il costruttore che per retrocompatibilità con php4 deve avere lo stesso nome della classe. Se avessimo voluto scrivere un plugin non retrocompatibile e quindi disegnato per php 5 (o superiore) avremmo potuto semplicemente utilizzare &quot;__constructor&quot;&lt;br /&gt;
In questo caso il costruttore è stato inserito solo come esempio teorico: noterete infatti che non esegue nessuna operazione e può essere cancellato.&lt;br /&gt;
Se avessimo voluto effettuare alcune operazioni anche nel caso la stringa {mystring} non fosse stata trovata avremmo potuto inserire le istruzioni nella funzione costruttore ed in quel caso il codice sarebbe stato eseguito ad ogni caricamento della pagina.&lt;br /&gt;
Avremmo potuto utilizzare anche un tipo di programmazione procedurale evitando di scrivere una classe, ma dato che gli sviluppatori del framework di Joomla raccomandano di seguire questo paradigma è bene seguire il loro consiglio. Inoltre giocare con questo tipo di codice ci abitua al design strutturato a oggetti di tutte le moderne applicazioni web (e non solo web).&lt;br /&gt;
&lt;h2&gt;&lt;br /&gt;
Il file mystring.xml&lt;/h2&gt;Il file mystring.xml è necessario per l&#39;installazione del plugin e per la gestione dei parametri.&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;lt;install group=&quot;content&quot; type=&quot;plugin&quot; version=&quot;1.5&quot;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;lt;name&amp;gt;My String&amp;lt;/name&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;lt;author&amp;gt;Autore&amp;lt;/author&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;lt;creationdate&amp;gt;....&amp;lt;/creationdate&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;lt;license&amp;gt;http://www.gnu.org/copyleft/gpl.html GNU/GPL&amp;lt;/license&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;lt;authoremail&amp;gt;...&amp;lt;/authoremail&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;lt;authorurl&amp;gt;....&amp;lt;/authorurl&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;lt;version&amp;gt;1&amp;lt;/version&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;lt;description&amp;gt;Visualizza dele informazioni ad ogni occorrenza della stringa {mystring}&amp;lt;/description&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;lt;files&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;lt;filename plugin=&quot;mystring&quot;&amp;gt;mystring.php&amp;lt;/filename&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;lt;/files&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&amp;lt;/install&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/120801185238072063/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2011/07/scrivere-plugin-per-joomla-ii-parte.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/120801185238072063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/120801185238072063'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2011/07/scrivere-plugin-per-joomla-ii-parte.html' title='Scrivere plugin per Joomla (II parte)'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-4375457490581556852</id><published>2011-06-11T17:42:00.004+02:00</published><updated>2011-06-11T19:26:46.964+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Joomla 1.5"/><title type='text'>Scrivere plugin per Joomla (I parte)</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;E&#39;&amp;nbsp;necessario&amp;nbsp;&lt;b&gt;sviluppare&lt;/b&gt;&amp;nbsp;un &lt;b&gt;plugin&lt;/b&gt; per &lt;b&gt;&lt;a href=&quot;http://www.joomla.org/&quot; target=&quot;_blank&quot;&gt;Joomla&lt;/a&gt;&lt;/b&gt;&amp;nbsp;ogni volta che si vuole cambiare il comportamento di &lt;b&gt;Joomla&lt;/b&gt;&amp;nbsp;al verificarsi di un determinato &lt;b&gt;evento&lt;/b&gt;: i &lt;b&gt;plugin&lt;/b&gt;&amp;nbsp;di&amp;nbsp;&lt;b&gt;Joomla&amp;nbsp;&lt;/b&gt;infatti,&amp;nbsp;sono&amp;nbsp;&lt;u&gt;parti di codice che vengono eseguite in un dato momento&lt;/u&gt; del caricamento della pagina o &lt;u&gt;ad una determinata azione dell&#39;utente&lt;/u&gt;.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;La possibilità di &lt;b&gt;eseguire del codice&lt;/b&gt;&amp;nbsp;a seconda che certe condizioni si verifichino o meno, ci da la possibilità di &lt;b&gt;estendere le funzionalità di Joomla &lt;/b&gt;con semplicità ed eleganza rendendo il comportamento del nostro sito personalizzabile.&lt;/div&gt;&lt;br /&gt;
&lt;h2&gt;Tipologie di plugin in Joomla&lt;/h2&gt;&lt;b&gt;Joomla&lt;/b&gt;&amp;nbsp;possiede di &lt;i&gt;default &lt;/i&gt;un&amp;nbsp;certo numero di tipologie di &lt;b&gt;plugin &lt;/b&gt;definite &lt;b&gt;core&lt;/b&gt;.&lt;br /&gt;
Queste tipologie sono presenti nella cartella /&lt;i&gt;plugins&lt;/i&gt;/ di ogni installazione &lt;b&gt;Joomla&lt;/b&gt; e sono:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;b&gt;authentication&lt;/b&gt;: per estendere l&#39;autenticazione&lt;/li&gt;
&lt;li&gt;&lt;b&gt;content&lt;/b&gt;: per effettuare controlli o inserire funzionalità nei contenuti&lt;/li&gt;
&lt;li&gt;&lt;b&gt;editors&lt;/b&gt;: per realizzare editor&lt;/li&gt;
&lt;li&gt;&lt;b&gt;editors-xtd&lt;/b&gt;: per le estensioni degli editor&lt;/li&gt;
&lt;li&gt;&lt;b&gt;search&lt;/b&gt;: per estendere le funzionalità di ricerca&lt;/li&gt;
&lt;li&gt;&lt;b&gt;system&lt;/b&gt;: per far eseguire codice in vari momenti del caricamento del &lt;i&gt;framework&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;user&lt;/b&gt;: per estendere le funzionalità degli utenti&lt;/li&gt;
&lt;li&gt;&lt;b&gt;xmlrpc&lt;/b&gt;: per estendere l&#39;interattività con altri servizi web (ad es: Desktop remoti)&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Ogni tipologia di &lt;b&gt;plugin &lt;/b&gt;serve quindi a svolgere delle &lt;u&gt;funzionalità diverse&lt;/u&gt;: per permettere ciò&amp;nbsp;&lt;b&gt;Joomla &lt;/b&gt;mette a disposizione per ogni tipo di &lt;b&gt;plugin &lt;/b&gt;una serie di &lt;b&gt;eventi&lt;/b&gt;. Gli &lt;b&gt;eventi &lt;/b&gt;non sono altro che diversi momenti (appunto eventi) che si susseguono nel caricamento del &lt;b&gt;framework &lt;/b&gt;di &lt;b&gt;Joomla&lt;/b&gt;. È possibile quindi eseguire del codice in ognuno degli eventi che &lt;b&gt;Joomla &lt;/b&gt;mette a disposizione per una determinata tipologia di &lt;b&gt;plugin&lt;/b&gt;.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Prima di vedere i tipi di eventi a disposizione, osserviamo che qualora se ne presentasse la necessità è possibile creare una nuova tipologia di &lt;b&gt;plugin&lt;/b&gt;. Solitamente questo accade quando si sviluppa un &lt;b&gt;componente &lt;/b&gt;che ha degli eventi personalizzati e che ha bisogno di effettuare certe operazioni all&#39;esecuzione di questi eventi.&lt;/div&gt;&lt;br /&gt;
&lt;h2&gt;Eventi per ogni tipo di plugin&lt;/h2&gt;Authentication:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;onAuthenticate&lt;/li&gt;
&lt;/ol&gt;Content:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;onPrepareContent&lt;/li&gt;
&lt;li&gt;onAfterDisplayTitle&lt;/li&gt;
&lt;li&gt;onBeforeDisplayContent&lt;/li&gt;
&lt;li&gt;onBeforeContentSave (aggiunto nella versione 1.5.4)&lt;/li&gt;
&lt;li&gt;onAfterContentSave (aggiunto nella versione 1.5.4)&lt;/li&gt;
&lt;/ol&gt;Editors:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;onInit&lt;/li&gt;
&lt;li&gt;onGetContent&lt;/li&gt;
&lt;li&gt;onSetContent&lt;/li&gt;
&lt;li&gt;onSave&lt;/li&gt;
&lt;li&gt;onDisplay&lt;/li&gt;
&lt;li&gt;onGetInsertMethod&lt;/li&gt;
&lt;/ol&gt;Editors XTD (Extended):&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;onDisplay&lt;/li&gt;
&lt;/ol&gt;Search:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;onSearch&lt;/li&gt;
&lt;li&gt;onSearchAreas&lt;/li&gt;
&lt;/ol&gt;System:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;onAfterInitialise&lt;/li&gt;
&lt;li&gt;onAfterRoute&lt;/li&gt;
&lt;li&gt;onAfterDispatch&lt;/li&gt;
&lt;li&gt;onAfterRender&lt;/li&gt;
&lt;/ol&gt;User:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;onLoginUser&lt;/li&gt;
&lt;li&gt;onLoginFailure&lt;/li&gt;
&lt;li&gt;onLogoutUser&lt;/li&gt;
&lt;li&gt;onLogoutFailure&lt;/li&gt;
&lt;li&gt;onBeforeStoreUser&lt;/li&gt;
&lt;li&gt;onAfterStoreUser&lt;/li&gt;
&lt;li&gt;onBeforeDeleteUser&lt;/li&gt;
&lt;li&gt;onAfterDeleteUser&lt;/li&gt;
&lt;/ol&gt;XML-RPC:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;onGetWebServices&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
Nel prossimo articolo vedremo il codice di esempio di un &lt;b&gt;plugin&lt;/b&gt;.</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/4375457490581556852/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2011/06/scrivere-plugin-per-joomla-i-parte.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/4375457490581556852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/4375457490581556852'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2011/06/scrivere-plugin-per-joomla-i-parte.html' title='Scrivere plugin per Joomla (I parte)'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-6101337518508829156</id><published>2011-05-14T12:29:00.000+02:00</published><updated>2011-05-14T12:29:55.746+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Design pattern"/><title type='text'>Il pattern MVC</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://it.wikipedia.org/wiki/Model-View-Controller&quot; target=&quot;_blank&quot;&gt;Il pattern MVC&lt;/a&gt;&lt;/b&gt;&amp;nbsp;è un &lt;b&gt;architectural pattern&lt;/b&gt;&amp;nbsp;il cui scopo è quello di &lt;b&gt;separare&amp;nbsp;&lt;/b&gt;la rappresentazione del modello di dominio (&lt;b&gt;model&lt;/b&gt;) dall&#39;interfaccia utente (&lt;b&gt;view&lt;/b&gt;) e dal controllo dell&#39;interazione uomo-macchina (&lt;b&gt;controller&lt;/b&gt;). Il &lt;b&gt;pattern MVC&lt;/b&gt;&amp;nbsp;è utilizzato ad esempio da &lt;b&gt;Joomla &lt;/b&gt;e da molti altri &lt;b&gt;framework &lt;/b&gt;come &lt;a href=&quot;http://it.wikipedia.org/wiki/Ruby_on_Rails&quot; target=&quot;_blank&quot; title=&quot;Ruby on Rails&quot;&gt;Ruby on Rails&lt;/a&gt;, &lt;a href=&quot;http://it.wikipedia.org/wiki/Apache_Struts&quot; target=&quot;_blank&quot;&gt;Apache Struts&lt;/a&gt;&amp;nbsp;etc...&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-aoXo3qZPL6kxAYH4_YsEM2jWYEjDyqKE_iixfgNCJSDxe8CdTY0URi03U4i9tKi8eu6HTxdLUCnb2-a8VToWpWGP_HFaF1JxsbYMSuIvUn57CCyBJqmDp3kmGOS2-TEME1jPMu5KDAGW/s1600/Il+pattern+MVC.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Il pattern MVC&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-aoXo3qZPL6kxAYH4_YsEM2jWYEjDyqKE_iixfgNCJSDxe8CdTY0URi03U4i9tKi8eu6HTxdLUCnb2-a8VToWpWGP_HFaF1JxsbYMSuIvUn57CCyBJqmDp3kmGOS2-TEME1jPMu5KDAGW/s1600/Il+pattern+MVC.png&quot; title=&quot;Il pattern MVC&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Il &lt;b&gt;pattern MVC&lt;/b&gt; è basato sulla suddivisione dei compiti fra i componenti che interpretano i tre ruoli principali:&lt;/div&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;il &lt;b&gt;model &lt;/b&gt;fornisce i metodi per accedere ai dati utili dell&#39;applicazione e agli algoritmi del programma.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;la &lt;b&gt;view &lt;/b&gt;visualizza i dati elaborati dal &lt;b&gt;model &lt;/b&gt;e li mostra agli utenti.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;il &lt;b&gt;controller&lt;/b&gt; riceve i comandi dell&#39;utente (in genere attraverso la &lt;b&gt;view&lt;/b&gt;) e li attua modificando lo stato degli altri due componenti: in particolare recupera i dati dal &lt;b&gt;model &lt;/b&gt;e li restituisce alla &lt;b&gt;view &lt;/b&gt;stessa.&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Questo schema, fra l&#39;altro, implica anche la tradizionale separazione fra la logica applicativa (in questo contesto spesso chiamata &quot;&lt;b&gt;logica di business&lt;/b&gt;&quot;), a carico del &lt;b&gt;model&lt;/b&gt;, e l&#39;interfaccia utente a carico della&amp;nbsp;&lt;b&gt;view&lt;/b&gt;.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/6101337518508829156/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2011/05/il-pattern-mvc.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/6101337518508829156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/6101337518508829156'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2011/05/il-pattern-mvc.html' title='Il pattern MVC'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-aoXo3qZPL6kxAYH4_YsEM2jWYEjDyqKE_iixfgNCJSDxe8CdTY0URi03U4i9tKi8eu6HTxdLUCnb2-a8VToWpWGP_HFaF1JxsbYMSuIvUn57CCyBJqmDp3kmGOS2-TEME1jPMu5KDAGW/s72-c/Il+pattern+MVC.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-2591462302209845546</id><published>2011-04-24T21:05:00.004+02:00</published><updated>2011-04-29T12:43:39.114+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Promozione siti web"/><title type='text'>Promozione siti web</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6eCJsLQOzV3T3RGWNuK3s8l2oME2NHS3xDBoyYr0zCXiv9DuzPFeRz-vMbDXzlJ7hkZtRjYgIxi7RGe7m3V2-GPIAJ4LDJ7PVgddpdA6ack0n3kFNRG6to_ogIU9WcIsGclhqgPUg9OlS/s1600/promozione+siti+web.gif&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;promozione siti web&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6eCJsLQOzV3T3RGWNuK3s8l2oME2NHS3xDBoyYr0zCXiv9DuzPFeRz-vMbDXzlJ7hkZtRjYgIxi7RGe7m3V2-GPIAJ4LDJ7PVgddpdA6ack0n3kFNRG6to_ogIU9WcIsGclhqgPUg9OlS/s1600/promozione+siti+web.gif&quot; title=&quot;promozione siti web&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Nuova &lt;b&gt;promozione siti web&lt;/b&gt; valida per tutto l&#39;anno: al prezzo di&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;300 € &lt;/span&gt;(tutto incluso)&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;offriamo siti web&lt;/b&gt;&amp;nbsp;completi sviluppati con &lt;b&gt;&lt;a href=&quot;http://www.joomla.org/&quot; target=&quot;_blank&quot;&gt;Joomla&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdRifAjVC3FCQM9pXCmE3094XYM6ed-d9dmMraiyLPvrqSUsxhsW6CyrGoQRPBgjnUSAwo83xhKsMGEu3_EVFDOOtq2jdB3mDMr-9YLY7hURaw4bll08H4NycFqjkSfQwxoaBexytgqP9X/s1600/Joomla+promozione+siti+web.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;joomla promozione siti web&quot; border=&quot;0&quot; height=&quot;136&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdRifAjVC3FCQM9pXCmE3094XYM6ed-d9dmMraiyLPvrqSUsxhsW6CyrGoQRPBgjnUSAwo83xhKsMGEu3_EVFDOOtq2jdB3mDMr-9YLY7hURaw4bll08H4NycFqjkSfQwxoaBexytgqP9X/s200/Joomla+promozione+siti+web.png&quot; title=&quot;joomla promozione siti web&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;La nostra&amp;nbsp;&lt;b&gt;promozione&lt;/b&gt;&amp;nbsp;comprende per un&amp;nbsp;&lt;b&gt;sito web&lt;/b&gt;:&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;registrazione dominio e hosting per un anno&amp;nbsp;&lt;/li&gt;
&lt;li&gt;installazione di&amp;nbsp;&lt;a href=&quot;http://www.joomla.org/&quot; style=&quot;font-weight: bold;&quot; target=&quot;_blank&quot;&gt;Joomla&lt;/a&gt;&amp;nbsp;e configurazione iniziale&lt;/li&gt;
&lt;li&gt;creazione di un &lt;b&gt;template&lt;/b&gt;&amp;nbsp;personalizzato&lt;/li&gt;
&lt;li&gt;home page più pagina dei contatti&lt;/li&gt;
&lt;li&gt;pagina descrizione (dell&#39;azienda, associazione, persona ...)&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;Se sei interessato &lt;a href=&quot;mailto:moscapaolo@gmail.com&quot;&gt;contattami&lt;/a&gt; per il tuo nuovo &lt;b&gt;sito web&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/2591462302209845546/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2011/04/promozione-siti-web.html#comment-form' title='2 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/2591462302209845546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/2591462302209845546'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2011/04/promozione-siti-web.html' title='Promozione siti web'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6eCJsLQOzV3T3RGWNuK3s8l2oME2NHS3xDBoyYr0zCXiv9DuzPFeRz-vMbDXzlJ7hkZtRjYgIxi7RGe7m3V2-GPIAJ4LDJ7PVgddpdA6ack0n3kFNRG6to_ogIU9WcIsGclhqgPUg9OlS/s72-c/promozione+siti+web.gif" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-7485205304600456611</id><published>2011-04-22T23:47:00.004+02:00</published><updated>2011-04-23T00:05:25.174+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Joomla 1.6"/><title type='text'>Joomla 1.6: creare un modulo (III parte)</title><content type='html'>Nel post &lt;a href=&quot;http://paolomosca.blogspot.com/2011/04/joomla-16-creare-un-modulo-ii-parte.html&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;joomla 1.6: creare un modulo (II parte)&lt;/b&gt;&lt;/a&gt; abbiamo analizzato il codice necessario per &lt;b&gt;creare un modulo&lt;/b&gt; in &lt;b&gt;Joomla 1.6&lt;/b&gt;: in quest&#39;ultimo articolo vedremo come leggere i &lt;b&gt;parametri&lt;/b&gt; dei &lt;b&gt;moduli&lt;/b&gt; in modo da rendere più interessanti le nostre applicazioni.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Inserire i parametri nel file xml del modulo&lt;/h2&gt;Per prima cosa dobbiamo dire a &lt;a href=&quot;http://www.joomla.org/&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;Joomla&lt;/b&gt;&lt;/a&gt; quali &lt;b&gt;parametri&lt;/b&gt; vogliamo usare nel nostro &lt;b&gt;modulo&lt;/b&gt;: prendiamo il nostro &lt;a href=&quot;http://paolomosca.blogspot.com/2011/04/joomla-16-creare-un-modulo-ii-parte.html&quot; target=&quot;_blank&quot;&gt;mod_ciao_mondo.xml&lt;/a&gt; e aggiungiamo subito dopo il tag &lt;i&gt;&amp;lt;files&lt;/i&gt;&amp;gt; i nostri &lt;b&gt;parametri&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;lt;config&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; &amp;lt;fields name=&quot;params&quot;&amp;gt;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fieldset name=&quot;basic&quot;&amp;gt;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;field&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; name=&quot;par1&quot;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; type=&quot;text&quot;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; default=&quot;ciao mondo&quot;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; label=&quot;Scrivi il tuo saluto&quot;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; description=&quot;Questo è il saluto che comparirà nel modulo&quot; /&amp;gt;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt;field&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; name=&quot;par2&quot;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; type=&quot;radio&quot;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; default=&quot;1&quot;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; label=&quot;Mostra il saluto&quot;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; description=&quot;Decidi se mostrare il saluto oppure no&quot;&amp;gt;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;option&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt; value=&quot;1&quot;&amp;gt;JSHOW&amp;lt;/option&amp;gt;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;option&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt; value=&quot;0&quot;&amp;gt;JHIDE&amp;lt;/option&amp;gt;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt;/field&amp;gt;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/fieldset&amp;gt;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; &amp;lt;/fields&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;lt;/config&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
In pratica abbiamo due &lt;b&gt;parametri&lt;/b&gt;: uno conterrà il nostro saluto (&lt;i&gt;par1&lt;/i&gt;) e l&#39;altro ci permetterà di disabilitare oppure no il nostro messaggio attraverso una radio button (&lt;i&gt;par2&lt;/i&gt;).&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Joomla&lt;/b&gt; mette automaticamente a disposizione nell&#39;entry point del &lt;b&gt;modulo&lt;/b&gt; la variabile &lt;i&gt;$params&lt;/i&gt; che conterrà i valori che l&#39;utente ha salvato nel backend del sito. Come forse avrete notato, la variabile &lt;i&gt;$params&lt;/i&gt; veniva passata come argomento al metodo &lt;i&gt;getSaluto&lt;/i&gt; dell&#39;helper proprio per poter utilizzare i parametri del &lt;b&gt;modulo&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Passare i parametri all&#39;helper del modulo&lt;/h2&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;class modCiaoMondoHelper&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static function getSaluto(&amp;amp;$params)&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($params-&amp;gt;get(&quot;par2&quot;) == 1)&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return $params-&amp;gt;get(&quot;par1&quot;);&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;}&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
Il codice è molto semplice: se il secondo &lt;b&gt;parametro&lt;/b&gt; è uguale a 1 (equivale a selezionare &#39;&lt;i&gt;Mostra&lt;/i&gt;&#39; nella radio button) viene usato come saluto il valore del primo &lt;b&gt;parametro&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Modifichiamo il template&lt;/h2&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;defined(&#39;_JEXEC&#39;) or die;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;if ($saluto)&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo $saluto;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;}&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Dopo aver generato lo zip dei file siamo pronti ad utilizzare il &lt;b&gt;modulo&lt;/b&gt; nel nostro &lt;b&gt;sito web&lt;/b&gt;.</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/7485205304600456611/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2011/04/joomla-16-creare-un-modulo-iii-parte.html#comment-form' title='3 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/7485205304600456611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/7485205304600456611'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2011/04/joomla-16-creare-un-modulo-iii-parte.html' title='Joomla 1.6: creare un modulo (III parte)'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-5894960547497645190</id><published>2011-04-16T16:44:00.008+02:00</published><updated>2011-04-23T00:07:07.758+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Joomla 1.6"/><title type='text'>Joomla 1.6: creare un modulo (II parte)</title><content type='html'>Nell&#39;articolo &lt;a href=&quot;http://paolomosca.blogspot.com/2011/04/joomla-16-creare-un-modulo-i-parte.html&quot; target=&quot;_blank&quot;&gt;joomla 1.6: creare un modulo (I parte)&lt;/a&gt; abbiamo indicato quali sono i file necessari per &lt;b&gt;creare un modulo&lt;/b&gt; in &lt;b&gt;Joomla 1.6&lt;/b&gt; e dove devono essere posizionati. In questo secondo articolo vedremo il codice necessario per realizzare il nostro &lt;b&gt;modulo&lt;/b&gt; &quot;Ciao mondo&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Punto di entrata del modulo&lt;/h2&gt;In mod_ciao_mondo.php si trova l&#39;entry point del &lt;b&gt;modulo&lt;/b&gt; ciao_mondo (il nome del file deve essere lo stesso della cartella che lo contiene):&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;lt;?php &lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;// impediamo l&#39;accesso diretto alla pagina&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;defined(&#39;_JEXEC&#39;) or die;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;// richiesta del file helper.php&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;require_once dirname(__FILE__).&#39;/helper.php&#39;; &lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;// chiamata al metodo statico getSaluto presente nell&#39;helper&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;$saluto = modCiaoMondoHelper::getSaluto($params);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;require JModuleHelper::getLayoutPath(&#39;mod_ciao_mondo&#39;, $params-&amp;gt;get(&#39;layout&#39;, &#39;default&#39;));&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;?&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Il codice è molto semplice ed i commenti dovrebbero essere sufficienti per capirne il funzionamento.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Il file helper del modulo&lt;/h2&gt;Nel nostro esempio il file helper.php sarà molto semplice:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;// classe del modulo&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;class modCiaoMondoHelper&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // metodo statico&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static function getSaluto(&amp;amp;$params)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // valore di ritorno&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &#39;Ciao Mondo!&#39;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;?&amp;gt; &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Osserviamo soltanto che il nome della classe è composto da mod + CiaoMondo (nome del &lt;b&gt;modulo&lt;/b&gt; senza underscore) + Helper.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Template del Modulo&lt;/h2&gt;Il file del template &quot;tmpl/default.php&quot; si limita semplicemente a visualizzare il contenuto della variabile $saluto:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;defined(&#39;_JEXEC&#39;) or die;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;echo $saluto;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Notiamo come la variabile $saluto creata nello script mod_ciao_mondo.php sia automaticamente presente nel template grazie al &lt;b&gt;framework di Joomla&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;File xml del modulo&lt;/h2&gt;Infine vediamo il file mod_ciao_mondo.xml: esso servirà a &lt;b&gt;Joomla&lt;/b&gt; per poter caricare correttamente il &lt;b&gt;modulo&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;lt;extension client=&quot;site&quot; method=&quot;upgrade&quot; type=&quot;module&quot; version=&quot;1.6.2&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;name&amp;gt;Ciao Mondo!&amp;lt;/name&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;author&amp;gt;Paolo Mosca&amp;lt;/author&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;version&amp;gt;1.6.2&amp;lt;/version&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;Modulo Ciao Mondo&amp;lt;/description&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;files&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;filename module=&quot;mod_ciao_mondo&quot;&amp;gt;mod_ciao_mondo.php&amp;lt;/filename&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;filename&amp;gt;mod_ciao_mondo.xml&amp;lt;/filename&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;filename&amp;gt;index.html&amp;lt;/filename&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;filename&amp;gt;helper.php&amp;lt;/filename&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;filename&amp;gt;tmpl/default.php&amp;lt;/filename&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;filename&amp;gt;tmpl/index.html&amp;lt;/filename&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/files&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;lt;/extension&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Per poter utilizzare questo semplice &lt;b&gt;modulo&lt;/b&gt; basterà creare uno zip (mod_ciao_mondo.zip) di tutti i file visti nei due tutorial e utilizzare la procedura di installazione di &lt;b&gt;Joomla&lt;/b&gt;.</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/5894960547497645190/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2011/04/joomla-16-creare-un-modulo-ii-parte.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/5894960547497645190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/5894960547497645190'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2011/04/joomla-16-creare-un-modulo-ii-parte.html' title='Joomla 1.6: creare un modulo (II parte)'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-840711633695901693</id><published>2011-04-07T10:59:00.010+02:00</published><updated>2011-04-23T00:07:34.934+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Joomla 1.6"/><title type='text'>Joomla 1.6: creare un modulo (I parte)</title><content type='html'>&lt;b&gt;&lt;a href=&quot;http://www.joomla.org/&quot; target=&quot;_blank&quot;&gt;Joomla 1.6&lt;/a&gt;&lt;/b&gt;&amp;nbsp;permette di &lt;b&gt;creare un modulo&lt;/b&gt;&amp;nbsp;personalizzato in maniera molto semplice sfruttando le caratteristiche del &lt;b&gt;framework&lt;/b&gt; stesso: un &lt;b&gt;modulo &lt;/b&gt;di &lt;b&gt;Joomla 1.6&lt;/b&gt;&amp;nbsp;è infatti essenzialmente composto da un insieme di file posizionati in determinate directory di &lt;b&gt;Joomla&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;File che compongono un modulo di Joomla 1.6&lt;/h2&gt;Come esempio classico creiamo il &lt;b&gt;modulo&lt;/b&gt;&amp;nbsp;&quot;ciao mondo&quot;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;andate nella directory “&lt;b&gt;modules&lt;/b&gt;” di &lt;b&gt;Joomla &lt;/b&gt;e create una cartella chiamata “mod_ciao_mondo”&lt;/li&gt;
&lt;li&gt;entrate nella directory&amp;nbsp;“mod_ciao_mondo”&lt;/li&gt;
&lt;li&gt;create un file denominato “mod_ciao_mondo.php” (il nome deve essere uguale a quello scelto nel punto numero 1)&lt;/li&gt;
&lt;li&gt;create un secondo file, denominato “mod_ciao_mondo.xml”&lt;/li&gt;
&lt;li&gt;create&amp;nbsp;un file denominato “helper.php”&lt;/li&gt;
&lt;li&gt;create la cartella tmpl&lt;/li&gt;
&lt;li&gt;create&amp;nbsp;un file di template “tmpl/default.php”&lt;/li&gt;
&lt;/ol&gt;Per motivi di sicurezza, ricordatevi inoltre di creare in ogni nuova cartella il file index.html con il seguente contenuto: &quot;&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&quot;. &lt;br /&gt;
&lt;br /&gt;
In conclusione i file principali di ogni &lt;b&gt;modulo&lt;/b&gt;&amp;nbsp;di &lt;b&gt;Joomla&lt;/b&gt;&amp;nbsp;sono quindi contenuti nella cartella &quot;mod_nome_modulo&quot; e sono ad esempio:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;“mod_ciao_mondo.php” (rappresenta l&#39;entry point)&lt;/li&gt;
&lt;li&gt;“helper.php”&lt;/li&gt;
&lt;li&gt;“tmpl/default.php” (il file del template)&lt;/li&gt;
&lt;/ol&gt;Nel prossimo articolo &lt;a href=&quot;http://paolomosca.blogspot.com/2011/04/joomla-16-creare-un-modulo-ii-parte.html&quot; target=&quot;_blank&quot;&gt;joomla 1.6: creare un modulo (II parte)&lt;/a&gt; andremo ad analizzare in dettaglio il codice di cui è composto ogni singolo file.</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/840711633695901693/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2011/04/joomla-16-creare-un-modulo-i-parte.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/840711633695901693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/840711633695901693'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2011/04/joomla-16-creare-un-modulo-i-parte.html' title='Joomla 1.6: creare un modulo (I parte)'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-2267568529584811540</id><published>2011-03-22T15:10:00.002+01:00</published><updated>2011-04-23T00:08:40.143+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Joomla 1.6"/><title type='text'>Joomla 1.6: le categorie</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Dopo aver visto il nuovo sistema di gestione dei &lt;a href=&quot;http://paolomosca.blogspot.com/2011/02/joomla-16-permessi-e-utenti-acl.html&quot; target=&quot;_blank&quot;&gt;permessi e degli utenti&lt;/a&gt; di &lt;b&gt;Joomla 1.6&lt;/b&gt; introduciamo un&#39;altra importante novità: la gestione delle &lt;b&gt;categorie&lt;/b&gt;. Mentre in &lt;b&gt;Joomla 1.5&lt;/b&gt; eravamo obbligati a legare le &lt;b&gt;categorie&lt;/b&gt; alle sezioni non potendo annidare una &lt;b&gt;categoria &lt;/b&gt;dentro l&#39;altra, in &lt;b&gt;Joomla 1.6&lt;/b&gt; questa limitazione è stata tolta: esistono solo le &lt;b&gt;categorie&lt;/b&gt; (non troverete più le sezioni) ed inoltre possiamo formare una gerarchia ad albero profonda quanto vogliamo assegnando ad ogni &lt;b&gt;categoria&lt;/b&gt; il proprio padre. Vediamo con un esempio come è possibile nidificare le &lt;b&gt;categorie&lt;/b&gt; in &lt;b&gt;Joomla 1.6&lt;/b&gt;: andiamo in &lt;b&gt;Contenuti &lt;/b&gt;-&amp;gt; &lt;b&gt;Gestione Categorie&lt;/b&gt; -&amp;gt; &lt;b&gt;Nuovo&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaWLQyIJrbWc4CDDwwMtutiUwZtMm26gFrQ6GTpUlK2KWnLepctfi2tdPfIHP0iPfC_C_CgOI1ZBPRcA7cCjqrvL5QUiTgnj4mCNd54nw22WQZNYexBBCC9kqY7_d4Rz8otdLxQjjyc2kj/s1600/Joomla+1.6+categorie.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Joomla 1.6 categorie&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaWLQyIJrbWc4CDDwwMtutiUwZtMm26gFrQ6GTpUlK2KWnLepctfi2tdPfIHP0iPfC_C_CgOI1ZBPRcA7cCjqrvL5QUiTgnj4mCNd54nw22WQZNYexBBCC9kqY7_d4Rz8otdLxQjjyc2kj/s1600/Joomla+1.6+categorie.jpg&quot; title=&quot;Joomla 1.6 categorie&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Come possiamo vedere per ogni &lt;b&gt;categoria &lt;/b&gt;abbiamo la possibilità di specificare la &lt;b&gt;categoria &lt;/b&gt;padre (Parent): in questa maniera riusciamo a creare la nostra gerarchia ad albero.&lt;br /&gt;
Gli articoli che andremo a scrivere verrano legati alla &lt;b&gt;categoria&lt;/b&gt; rendendo la gestione dei contenuti più semplice e completa senza dover essere obbligati per forza a creare le sezioni.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/2267568529584811540/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2011/03/joomla-16-le-categorie.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/2267568529584811540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/2267568529584811540'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2011/03/joomla-16-le-categorie.html' title='Joomla 1.6: le categorie'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaWLQyIJrbWc4CDDwwMtutiUwZtMm26gFrQ6GTpUlK2KWnLepctfi2tdPfIHP0iPfC_C_CgOI1ZBPRcA7cCjqrvL5QUiTgnj4mCNd54nw22WQZNYexBBCC9kqY7_d4Rz8otdLxQjjyc2kj/s72-c/Joomla+1.6+categorie.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-555806856087319571</id><published>2011-03-14T14:51:00.002+01:00</published><updated>2011-03-14T15:51:30.546+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><category scheme="http://www.blogger.com/atom/ns#" term="Xdebug"/><title type='text'>PHP DEBUG con Eclipse (PDT)</title><content type='html'>Per chi sviluppa in &lt;a href=&quot;http://www.php.net/&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;PHP&lt;/b&gt;&lt;/a&gt; è semplice effettuare il &lt;b&gt;DEBUG&lt;/b&gt; delle proprie applicazioni utilizzando &lt;a href=&quot;http://www.eclipse.org/&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;Eclipse&lt;/b&gt;&lt;/a&gt;: in particolare &lt;a href=&quot;http://www.eclipse.org/pdt/&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;Eclipse PHP (PDT)&lt;/b&gt;&lt;/a&gt; è l&#39;&lt;b&gt;IDE &lt;/b&gt;che fa per voi. Vediamo come dotarsi velocemente di un &lt;b&gt;ambiente professionale&lt;/b&gt; per creare le vostre applicazioni in &lt;b&gt;PHP&lt;/b&gt; utilizzando un PC che abbia come sistema operativo Windows 7:&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Installiamo XAMPP&lt;/h2&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Per prima cosa ci dobbiamo dotare di un &lt;b&gt;web server&lt;/b&gt;, dell&#39;interprete &lt;b&gt;PHP&lt;/b&gt; e di tutto il necessario per sviluppare applicazioni web dinamiche: a questo provvede &lt;a href=&quot;http://www.apachefriends.org/it/xampp-windows.html&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;XAMPP&lt;/b&gt;&lt;/a&gt;, che ci fa risparmiare un bel pò di lavoro. Chiaramente questa soluzione deve essere utilizzata solo per gli &lt;b&gt;ambienti di sviluppo&lt;/b&gt; (mai in produzione). &lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Un problema che può sorgere in questa fase riguarda la porta utilizzata da &lt;b&gt;Apache&lt;/b&gt;. Di default è la 80 ma ci potrebbero essere altri programmi che la utilizzano (ad esempio &lt;b&gt;Skype&lt;/b&gt;) rendendo impossibile l&#39;avvio del &lt;b&gt;web server&lt;/b&gt;. Se così fosse fermiamo XAMPP e apriamo con un editor di testo il file: &lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;code&gt;[Cartella dove è stato installato XAMPP]/apache/conf/httpd.conf&lt;/code&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Cerchiamo la proprietà &lt;b&gt;Listen&lt;/b&gt; e mettiamo un numero di porta diverso (ad esempio 81). Ricordiamoci di sostituire il numero della porta anche sulla proprietà &lt;b&gt;ServerName&lt;/b&gt;.&lt;/div&gt;&lt;br /&gt;
&lt;h2&gt;Attivare XDEBUG&lt;/h2&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Per effettuare il &lt;b&gt;DEBUG&lt;/b&gt; delle nostre applicazioni &lt;b&gt;PHP&lt;/b&gt; utilizzeremo la libreria &lt;a href=&quot;http://www.xdebug.org/download.php&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;Xdebug&lt;/b&gt;&lt;/a&gt;. Andate a verificare che nel seguente percorso:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;code&gt;[Cartella dove è stato installato XAMPP]/php/ext/&lt;/code&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;sia presente il file &lt;i&gt;php_xdebug.dll&lt;/i&gt;. Se non trovate questa dll andate nella pagina di download di  &lt;a href=&quot;http://www.xdebug.org/download.php&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;Xdebug&lt;/b&gt;&lt;/a&gt; e scegliete il link corretto a seconda della vostra versione di &lt;b&gt;PHP &lt;/b&gt;(per saperlo visualizzate il phpinfo). Una volta completato il download mettete la dll che avete scaricato nel percorso in questione.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Adesso apriamo con un editor di testo il seguente file:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;code&gt;[Cartella dove è stato installato XAMPP]/php/php.ini&lt;/code&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Per prima cosa cerchiamo la proprietà &lt;i&gt;zend_extension &lt;/i&gt;e rimuoviamo il punto e virgola (commento). Controlliamo poi che il percorso specificato punti proprio alla dll di cui parlavo sopra. Togliamo il commento alle seguenti proprietà e impostiamole come segue:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;code&gt;xdebug.remote_enable=On&lt;/code&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;code&gt;xdebug.remote_host=&quot;localhost&quot;&lt;/code&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;code&gt;xdebug.remote_port=9000&lt;/code&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;code&gt;xdebug.remote_handler=&quot;dbgp&quot;&lt;/code&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Riavviamo &lt;b&gt;XAMPP &lt;/b&gt;e &lt;b&gt;Apache &lt;/b&gt;e verifichiamo dal phpinfo() che &lt;b&gt;Xdebug &lt;/b&gt;sia correttamente abilitato.&lt;/div&gt;&lt;br /&gt;
&lt;h2&gt;Eclipse e il DEBUG delle applicazioni in PHP&lt;/h2&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Scarichiamo la versione di &lt;b&gt;Eclipse &lt;/b&gt;ottimizzata per &lt;b&gt;PHP&lt;/b&gt;: &lt;a href=&quot;http://www.eclipse.org/pdt/downloads/&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;PDT&lt;/b&gt;&lt;/a&gt;. Facciamo il download del file &lt;i&gt;All-In-One Windows 32-bit&lt;/i&gt;. Dopo aver lanciato &lt;b&gt;Eclipse&lt;/b&gt; andiamo in window -&amp;gt; preferences -&amp;gt; PHP -&amp;gt; PHP Executables. Facciamo add (aggiungi)&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEe76QYDA5sqll4IPf80Zl6zS8L5GQ4ZN6BVaDwQoS3tO5iWt8yqM3ft7chn_wxiLj7BBA9nWLlFDMoRP6FH4GUGD2p7smIQXn5TtFYbg1mu5AflH9Oa4hL3RmivLUTDSIQfKMyzm8J7Q_/s1600/php_debug_eclipse_pdt.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;php debug eclipse pdt&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEe76QYDA5sqll4IPf80Zl6zS8L5GQ4ZN6BVaDwQoS3tO5iWt8yqM3ft7chn_wxiLj7BBA9nWLlFDMoRP6FH4GUGD2p7smIQXn5TtFYbg1mu5AflH9Oa4hL3RmivLUTDSIQfKMyzm8J7Q_/s1600/php_debug_eclipse_pdt.jpg&quot; title=&quot;php debug eclipse pdt&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Nel name mettiamo PHP, nell&#39;executable path mettiamo il percorso del file &lt;i&gt;php-cgi.exe&lt;/i&gt; presente dentro la cartella php che si trova nella cartella di installazione di XAMPP. Lo stesso discorso per il file &lt;i&gt;php.ini&lt;/i&gt;. Come debugger scegliamo XDebug. Vedi sopra per un esempio.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Salviamo e andiamo infine in window -&amp;gt; preferences -&amp;gt; PHP -&amp;gt; Debug e impostiamo i valori come nella immagine sottostante dove andiamo a impostare il debugger e l&#39;eseguibile &lt;b&gt;PHP&lt;/b&gt;.&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKd3JTK2ZYiDmPm7MnBoxs-w4i-gW0Z3voIJAKEEFlo9jBdyhBCVq6bdGqOkygwKY82Q-5QaPA4Nb0VNjJAEwlE9ifmBTPemS3ipWAnVtGeh5c2VHyEXHPR38AVQxzu2fwyqkG8teajMxG/s1600/php+debug+eclipse.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;php debug eclipse&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKd3JTK2ZYiDmPm7MnBoxs-w4i-gW0Z3voIJAKEEFlo9jBdyhBCVq6bdGqOkygwKY82Q-5QaPA4Nb0VNjJAEwlE9ifmBTPemS3ipWAnVtGeh5c2VHyEXHPR38AVQxzu2fwyqkG8teajMxG/s1600/php+debug+eclipse.jpg&quot; title=&quot;php debug eclipse&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
A questo punto possiamo effettuare il &lt;b&gt;Debug &lt;/b&gt;delle nostre applicazioni &lt;b&gt;PHP &lt;/b&gt;utilizzando &lt;b&gt;eclipse&lt;/b&gt;.</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/555806856087319571/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2011/03/php-debug-con-eclipse-pdt.html#comment-form' title='3 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/555806856087319571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/555806856087319571'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2011/03/php-debug-con-eclipse-pdt.html' title='PHP DEBUG con Eclipse (PDT)'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEe76QYDA5sqll4IPf80Zl6zS8L5GQ4ZN6BVaDwQoS3tO5iWt8yqM3ft7chn_wxiLj7BBA9nWLlFDMoRP6FH4GUGD2p7smIQXn5TtFYbg1mu5AflH9Oa4hL3RmivLUTDSIQfKMyzm8J7Q_/s72-c/php_debug_eclipse_pdt.jpg" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-2051718888506216211</id><published>2011-03-07T14:04:00.001+01:00</published><updated>2011-03-07T14:18:34.586+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><title type='text'>jQuery Ajax: utilizzare il framework jQuery per le richieste Ajax</title><content type='html'>&lt;b&gt;&lt;a href=&quot;http://jquery.com/&quot; target=&quot;_blank&quot;&gt;jQuery&lt;/a&gt;&lt;/b&gt; consente di effettuare richieste &lt;b&gt;Ajax&lt;/b&gt; in maniera molto semplice: vediamo con un esempio come sfruttare la potenza del &lt;b&gt;framework jQuery&lt;/b&gt; per effettuare chiamate &lt;b&gt;Ajax&lt;/b&gt;: &lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Scarichiamo la libreria &lt;b&gt;jQuery&lt;/b&gt;&lt;/h2&gt;Andiamo nel sito ufficiale del porgetto e facciamo il download della versione Minified. A questo punto includiamola nel nostro script lato client&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;lt;script type=&quot;text/javascript&quot; src=&quot;jquery-1.5.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;h2&gt;Prepariamo lo script lato server (esempio in PHP)&lt;/h2&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp; (int)$id = $_GET[&quot;id&quot;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp; if ($id==1) echo &quot;Rosso&quot;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp; if ($id==2) echo &quot;Giallo&quot;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp; if ($id==3) echo &quot;Verde&quot;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp; if ($id!=1 &amp;amp;&amp;amp; $id!=2 &amp;amp;&amp;amp; $id!=3)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &quot;id non valido!&quot;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Salviamo il file con il nome &lt;b&gt;test_ajax.php&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;jQuery Ajax&lt;/h2&gt;Nel nostro script lato client avremo:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp; $.ajax({&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; type: &quot;GET&quot;,&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; url: &quot;test_ajax.php&quot;,&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data: &quot;id=1&quot;,&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; success: function(response){&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(&quot;#output&quot;).html(response);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp; });&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Il valore dell&#39;id passato allo script &lt;b&gt;PHP &lt;/b&gt;si trova in &lt;i&gt;data&lt;/i&gt;. La risposta testuale fornita dal file &lt;b&gt;PHP &lt;/b&gt;è contenuta nel parametro &lt;i&gt;response &lt;/i&gt;e la visualizziamo nel div &lt;i&gt;output&lt;/i&gt; tramite la riga:&lt;br /&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;$(&quot;#output&quot;).html(response);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Nel nostro esempio otteremo ovviamente come risposta &quot;Rosso&quot;. Modificando il valore dell&#39;id in &lt;i&gt;data&lt;/i&gt; avremo le altre risposte.&lt;br /&gt;
Chiaramente sarebbe più utile passare il valore dell&#39;id tramite un form o altro ma per far capire il funzionamento di base questo non era necessario. Quello che risulta evidente è la semplicità con cui si possono effettuare chiamate &lt;b&gt;ajax&lt;/b&gt; attraverso &lt;b&gt;jQuery&lt;/b&gt; e le potenzialità di questo &lt;b&gt;framework&lt;/b&gt;.</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/2051718888506216211/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2011/03/jquery-ajax-utilizzare-il-framework.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/2051718888506216211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/2051718888506216211'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2011/03/jquery-ajax-utilizzare-il-framework.html' title='jQuery Ajax: utilizzare il framework jQuery per le richieste Ajax'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-954030137301761323</id><published>2011-03-04T10:31:00.003+01:00</published><updated>2011-04-23T00:09:04.822+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Joomla 1.6"/><title type='text'>Joomla 1.6: gestione permessi</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Nel precedente post &lt;a href=&quot;http://paolomosca.blogspot.com/2011/02/joomla-16-permessi-e-utenti-acl.html&quot; target=&quot;_blank&quot;&gt;Joomla 1.6: permessi e utenti&lt;/a&gt; abbiamo introdotto la&lt;b&gt; gestione dei permessi (ACL)&lt;/b&gt; presenti nel nuovo core di &lt;b&gt;Joomla 1.6&lt;/b&gt; rimandando ad un successivo articolo per un esempio concreto. Supponiamo quindi di avere la necessità di applicare dei &lt;b&gt;permessi&lt;/b&gt; diversi a seconda del tipo di &lt;b&gt;utente&lt;/b&gt; che effettua il login al nostro &lt;b&gt;sito web&lt;/b&gt;.&lt;/div&gt;&lt;br /&gt;
&lt;h2&gt;Esempio di gestione dei permessi&lt;/h2&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Nel nostro sito aziendale vogliamo che ci siano tre tipi di &lt;b&gt;utenti&lt;/b&gt;:&lt;/div&gt;&lt;ol style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;Utente normale&lt;/li&gt;
&lt;li&gt;Cliente&lt;/li&gt;
&lt;li&gt;Cliente affezionato&lt;/li&gt;
&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;In pratica vogliamo che i clienti, oltre ai contenuti degli utenti normali, possano visualizzare degli articoli particolari; inoltre vogliamo premiare i clienti affezionati (quelli che non ci lasceranno mai) con dei contenuti pensati esclusivamente per loro. Chiaramente i clienti affezionati potranno vedere anche quello che vedono gli utenti normali e i clienti.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Con &lt;b&gt;la gestione dei permessi&lt;/b&gt; di &lt;b&gt;Joomla 1.6&lt;/b&gt; è molto semplice soddisfare questa esigenza. Vediamo come:&lt;/div&gt;&lt;br /&gt;
&lt;h2&gt;Creare i gruppi&lt;/h2&gt;Per creare un gruppo, accediamo nel back end del nostro sito in &lt;b&gt;Joomla 1.6&lt;/b&gt;. Nel menù superiore andiamo su Utenti - Aggiungi nuovo gruppo.&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Nel campo Titolo Gruppo inseriamo &lt;b&gt;Gruppo Clienti&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Nel campo Gruppo Principale scegliamo &lt;b&gt;Registered&lt;/b&gt;. I gruppi Registered e Clienti avranno le stesse autorizzazioni (cioè, potranno accedere al &lt;b&gt;front end&lt;/b&gt; del sito). I Clienti saranno un sotto gruppo degli utenti Registered.&lt;/li&gt;
&lt;li&gt;Clicchiamo su &lt;b&gt;Salva e Nuovo&lt;/b&gt; in alto a destra per salvare il gruppo Clienti e creare un nuovo gruppo.&lt;/li&gt;
&lt;li&gt;Inseriamo &lt;b&gt;Gruppo Clienti affezionati&lt;/b&gt; nel campo Titolo Gruppo.&lt;/li&gt;
&lt;li&gt;Nel campo Gruppo Principale scegliamo &lt;b&gt;Registered&lt;/b&gt;. In questo modo Clienti e Clienti affezionati avranno lo stesso livello di accesso.&lt;/li&gt;
&lt;li&gt;Clicchiamo su &lt;b&gt;Salva e Chiudi&lt;/b&gt; per tornare nella schermata User Manager: Gruppi.&lt;/li&gt;
&lt;/ol&gt;Notiamo che il gruppo &lt;b&gt;public &lt;/b&gt;è già esistente di default.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Assegnare i permessi di base&lt;/h2&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;I gruppi Clienti e Clienti affezionati, hanno ereditato i &lt;b&gt;permessi&lt;/b&gt; di base del Gruppo padre. Il gruppo Registered ha infatti impostato per default l&#39;autorizzazione per accedere al front end del sito, quindi, in questo caso, non abbiamo bisogno di assegnare altri permessi ai gruppi.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Notiamo  che stiamo parlando solo dei contenuti che possono o non possono essere visti e non  abbiamo parlato di modifica, creazione e gestione dei contenuti: per questo motivo abbiamo scelto come gruppo padre il gruppo Registered che ha come &lt;b&gt;permesso&lt;/b&gt; solo il &lt;b&gt;Site Login&lt;/b&gt; mentre tutti gli altri sono disabilitati.&lt;/div&gt;&lt;br /&gt;
&lt;h2&gt;Creare utenti e assegnarli ai gruppi&lt;/h2&gt;Ora che abbiamo creato i gruppi e assegnato i &lt;b&gt;permessi di base&lt;/b&gt; andiamo su Utenti -&amp;gt; Aggiungi nuovo utente e cominciamo ad inserire i dati dei nostri clienti. Scegliamo ovviamente come gruppo quello relativo ai clienti. Ripetiamo la stessa operazione per i Clienti affezionati.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Creare i livelli di accesso&lt;br /&gt;
&lt;/h2&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Ora che abbiamo gli utenti, i &lt;b&gt;permessi di base&lt;/b&gt; e i gruppi, non ci resta che creare due livelli di accesso, uno per i clienti e uno per i clienti affezionati.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Andiamo su Utenti - Aggiungi Nuovo Livello di Accesso&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Nel campo Titolo del Livello, inseriamo Accesso Clienti affezionati. Selezioniamo la casella vicino al Gruppo Clienti affezionati. &lt;u&gt;In questo modo solo il gruppo selezionato potrà vedere i contenuti del Gruppo Clienti affezionati&lt;/u&gt;.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Clicchiamo su Salva e Nuovo, e inseriamo Accesso Clienti come Titolo Livello e selezioniamo le caselle Gruppo Clienti e Gruppo Clienti affezionati. &lt;u&gt;Ciò consentirà ai Clienti affezionati di visualizzare entrambi i contenuti&lt;/u&gt;.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Ricordiamo che quando creiamo un nuovo livello di accesso specifichiamo quali gruppi possono vedere i&amp;nbsp; contenuti associati a quel livello.&lt;/div&gt;&lt;br /&gt;
&lt;h2&gt;Inserire i contenuti&lt;/h2&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Creiamo le categorie una per i &quot;clienti&quot; ed un&#39;altra per i &quot;clienti affezionati&quot; impostando i relativi livelli di accesso.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Prepariamo un articolo per i clienti affezionati nella categoria clienti affezionati. Per creare un nuovo articolo andiamo su Contenuto - Nuovo Articolo.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Compiliamo i campi in questo modo:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Titolo: Questo articolo è per i Clienti affezionati&lt;/li&gt;
&lt;li&gt;Categoria: Categoria clienti affezionati&lt;/li&gt;
&lt;li&gt;Stato: Pubblicato&lt;/li&gt;
&lt;li&gt;Accesso: Accesso clienti affezionati&lt;/li&gt;
&lt;li&gt;Testo Articolo: inserire un testo fittizio.&lt;/li&gt;
&lt;/ul&gt;Clicchiamo su Salva e Nuovo e ripetiamo l&#39;operazione per i clienti:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Titolo: Questo articolo è per i Clienti&lt;/li&gt;
&lt;li&gt;Categoria: Categoria clienti&lt;/li&gt;
&lt;li&gt;Stato: Pubblicato&lt;/li&gt;
&lt;li&gt;Accesso: Accesso clienti&lt;/li&gt;
&lt;li&gt;Testo Articolo: inserire un testo fittizio.&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Clicchiamo su Salva e Chiudi appena finito.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Organizziamo le voci di menù. Nel menù principale (Menù - Menù Principale), aggiungiamo due voci.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Per creare il collegamento, clicchiamo su Nuovo (in alto a destra), scegliamo Lista Categorie come tipo di menù e inseriamo le informazioni:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Titolo: Informazioni Clienti affezionati&lt;/li&gt;
&lt;li&gt;Tipo di menù: clicchiamo su Selezione, quindi Lista Categoria&lt;/li&gt;
&lt;li&gt;Stato: Pubblicato&lt;/li&gt;
&lt;li&gt;Accesso: Accesso clienti affezionati&lt;/li&gt;
&lt;li&gt;Scegli una Categoria: Categoria clienti affezionati&lt;/li&gt;
&lt;/ul&gt;Clicchiamo su Salva e Nuovo e ripetiamo il procedimento per i clienti:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Titolo: Informazioni Clienti&lt;/li&gt;
&lt;li&gt;Tipo di menù: clicchiamo su Selezione, quindi Lista Categoria&lt;/li&gt;
&lt;li&gt;Accesso: Accesso clienti&lt;/li&gt;
&lt;li&gt;Scegli una Categoria: Categoria clienti&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Clicchiamo su Salva e Chiudi. Adesso possiamo testare il nostro sistema andando ad usare le username e password inserite quando abbiamo creato i nostri &lt;b&gt;utenti&lt;/b&gt;. Se entriamo come cliente affezionato dovremmo vedere due collegamenti nel menù principale, &quot;Informazioni Clienti&quot; e &quot;Informazioni Clienti affezionati&quot; mentre se entriamo con un username associato al gruppo clienti dovremmo vedere solo il collegamento &quot;Informazioni Clienti&quot;.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/954030137301761323/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2011/03/joomla-16-gestione-permessi.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/954030137301761323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/954030137301761323'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2011/03/joomla-16-gestione-permessi.html' title='Joomla 1.6: gestione permessi'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176571438133373975.post-5942857923399540161</id><published>2011-02-28T14:09:00.009+01:00</published><updated>2011-04-23T00:09:28.166+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Joomla 1.6"/><title type='text'>Joomla 1.6: permessi e utenti (ACL)</title><content type='html'>Fra le novità più importanti di &lt;b&gt;&lt;a href=&quot;http://www.joomla.org/&quot; target=&quot;_blank&quot;&gt;Joomla 1.6&lt;/a&gt; &lt;/b&gt;abbiamo la &lt;b&gt;nuova gestione dei permessi e degli utenti&lt;/b&gt;, in gergo tecnico &lt;b&gt;ACL (Access Control Levels)&lt;/b&gt;; in pratica in &lt;b&gt;Joomla&lt;/b&gt; è possibile dare &lt;b&gt;permessi&lt;/b&gt; per leggere, creare, modificare e cancellare determinate pagine a &lt;b&gt;utenti o gruppi di utenti&lt;/b&gt;, a seconda del ruolo che essi hanno all&#39;interno del &lt;b&gt;sito web&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;ACL in Joomla 1.6: Panoramica&lt;/h2&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3huHDbIIhLpvojdI7jiWLQG76e4ZvIjxzy4XCjKePA8z7zNwVeS9wC-X_0tLB7Jsp8spt9jj5fFdWoFNuPHEqEHQ6mC3WFAMj4lvErfi0AoUeleD5PWyseifiM2Z7ooqhgon91uf8LiLj/s1600/Joomla+1.6+permessi+e+utenti+ACL.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Joomla 1.6: permessi e utenti ACL&quot; border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3huHDbIIhLpvojdI7jiWLQG76e4ZvIjxzy4XCjKePA8z7zNwVeS9wC-X_0tLB7Jsp8spt9jj5fFdWoFNuPHEqEHQ6mC3WFAMj4lvErfi0AoUeleD5PWyseifiM2Z7ooqhgon91uf8LiLj/s320/Joomla+1.6+permessi+e+utenti+ACL.png&quot; title=&quot;Joomla 1.6: permessi e utenti ACL&quot; width=&quot;262&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;h2&gt;&lt;b&gt;Utenti&lt;/b&gt;&lt;/h2&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Lo User rappresenta evidentemente &lt;b&gt;l&#39;utente&lt;/b&gt; del sito web. Notiamo che &lt;b&gt; un utente&lt;/b&gt; non deve essere necessariamente registrato in quanto potrebbe essere un &lt;b&gt;utente pubblico&lt;/b&gt; (semplice navigatore). Ogni utente può essere assegnato a uno o più &lt;b&gt;gruppi&lt;/b&gt;.&lt;u&gt;&lt;br /&gt;
&lt;/u&gt;&lt;/div&gt;&lt;br /&gt;
&lt;h2&gt;&lt;b&gt;Permessi di base&lt;/b&gt;&lt;/h2&gt;&lt;b&gt;I permessi di base &lt;/b&gt;rappresentano le operazioni che possono essere effettuate e&lt;b&gt; sono assegnati al gruppo, non ai singoli utenti&lt;/b&gt;. (Se volete assegnarli a un singolo utente, dovrete creare un gruppo per quel determinato utente).&lt;br /&gt;
Le autorizzazioni di base includono:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Login al sito&lt;/b&gt;: la possibilità di accedere al front end del sito.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Admin login&lt;/b&gt;: la possibilità di accedere al back end del sito.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Admin&lt;/b&gt;: privilegi amministrativi, come la possibilità di cambiare la configurazione globale.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Gestione&lt;/b&gt;: la possibilità di cambiare le impostazioni delle estensioni.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Creare&lt;/b&gt;: la possibilità  di creare un nuovo contenuto.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Cancellare&lt;/b&gt;: la possibilità di eliminare un contenuto.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Modifica&lt;/b&gt;: la possibilità di modificare tutti i contenuti esistenti.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Modifica stato&lt;/b&gt;: la possibilità di cambiare stato tra pubblicato,  non pubblicato, cestino.&lt;/li&gt;
&lt;/ul&gt;Le  autorizzazioni di base si impostano da &lt;b&gt;Configurazione Globale&lt;/b&gt; cliccando  nella tabella Permessi.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;&lt;b&gt;Gruppi&lt;/b&gt;&lt;/h2&gt;&lt;b&gt;Un  gruppo è un insieme di utenti&lt;/b&gt; che hanno gli stessi &lt;b&gt;permessi&lt;/b&gt;. Prendendo  per esempio i gruppi di Joomla 1.5, un utente del gruppo publisher si può loggare nel front end del sito, creare nuovi articoli, modificare quelli già  esistenti, renderli pubblici o annullare la pubblicazione. Tutti gli  utenti del gruppo publisher hanno gli stessi permessi.&lt;br /&gt;
In &lt;b&gt;Joomla 1.6, un utente può essere assegnato a più gruppi&lt;/b&gt;, per esempio nel gruppo publisher e nel gruppo administrator.&lt;br /&gt;
Ogni gruppo può avere dei sotto-gruppi che a loro volta si possono  suddividere ancora andando a creare una gerarchia ad albero ben precisa. In  pratica ogni gruppo ha il suo padre ad eccezione del Gruppo &lt;b&gt;Public&lt;/b&gt; che è il livello più generale da cui discendono tutti gli altri.&lt;br /&gt;
E&#39; possibile assegnare le autorizzazioni di base ai gruppi creati. Osserviamo che le autorizzazioni di base vengono &lt;b&gt;ereditate&lt;/b&gt; tra i gruppi nel senso che i figli avranno di default i permessi dei gruppi padri. Chiaramente sarà possibile modificare il comportamento andando in Configurazione Globale -&amp;gt; Permessi. Notiamo però che non potrete ad esempio attivare un permesso che è stato espressamente disabilitato nel gruppo padre perchè questo andrebbe contro la relazione di dipendenza creata.&lt;br /&gt;
&lt;b&gt;Un utente non registrato sul sito viene considerato appartenente al gruppo Public &lt;/b&gt;che avrà i permessi più leggeri.&lt;br /&gt;
Il  gruppo Public e il gruppo Registered non possono essere eliminati al contrario di tutti gli altri gruppi. (Comunque, vi consiglio di tenerli, perchè danno un buon modello su come funziona l&#39;ereditarietà delle autorizzazioni).&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;&lt;b&gt;Livelli d&#39;accesso&lt;/b&gt;&lt;/h2&gt;I  livelli d&#39;accesso sono relativi a che cosa uno o più gruppi di utenti possono vedere, nel front  end del sito web. In sostanza, sono le &lt;b&gt;autorizzazioni di lettura sul  front end del sito&lt;/b&gt;.&lt;br /&gt;
Storicamente  ci sono stati tre livelli di accesso: public (tutti possono vedere i  contenuti), registered (si deve accedere sul sito per vedere i  contenuti), special (bisogna avere un livello author o superiore per  vedere il contenuto).&lt;br /&gt;
Questi  livelli di accesso sono ancora presenti in Joomla 1.6 come default, ma  si possono creare dei livelli d&#39;accesso personalizzati.&lt;br /&gt;
&lt;b&gt;I  livelli di accesso non ereditano i permessi&lt;/b&gt;. Se si imposta un articolo  visibile solo dai publishers, anche i super admin non potranno vederlo.  (Comunque, con i permessi di super admin, si potrà modificare l&#39;articolo dal back  end).&lt;br /&gt;
&lt;br /&gt;
In un prossimo articolo cercheremo di mettere in pratica questi concetti in un esempio reale.</content><link rel='replies' type='application/atom+xml' href='http://paolomosca.blogspot.com/feeds/5942857923399540161/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://paolomosca.blogspot.com/2011/02/joomla-16-permessi-e-utenti-acl.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/5942857923399540161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176571438133373975/posts/default/5942857923399540161'/><link rel='alternate' type='text/html' href='http://paolomosca.blogspot.com/2011/02/joomla-16-permessi-e-utenti-acl.html' title='Joomla 1.6: permessi e utenti (ACL)'/><author><name>Paolo Mosca</name><uri>http://www.blogger.com/profile/17911845098852389118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3huHDbIIhLpvojdI7jiWLQG76e4ZvIjxzy4XCjKePA8z7zNwVeS9wC-X_0tLB7Jsp8spt9jj5fFdWoFNuPHEqEHQ6mC3WFAMj4lvErfi0AoUeleD5PWyseifiM2Z7ooqhgon91uf8LiLj/s72-c/Joomla+1.6+permessi+e+utenti+ACL.png" height="72" width="72"/><thr:total>0</thr:total></entry></feed>