Quando si lavora con il framework EzPublish, bisogna tenere presente che questo utilizza pesantemente un sistema di caching assai potente quanto fastidioso in fase di sviluppo. L’importanza di questo sistema di caching è tale per cui ci sono degli aspetti che non possono essere tralasciati quando si lavora con questo prodotto.

Supponiamo ad esempio di dover spostare un servizio implementato con questo framework da un dominio in un altro; questo comporta l’obbligo di modificare almeno i seguenti dati:

- le variabili SiteURL contenute nei file di configurazione site.ini.append.php delle cartelle setting/siteaccess/<nome_siteaccess> e setting/override/<nome_siteaccess>

- i dati di accesso alla base di dati, sempre nei medesimi file

- ed infine è necessario svuotare tutte le cache, per azzerare i percorsi e alcuni dati precedentemente memorizzati in cache, appunto

Il problema è che spesso non si può utilizzare il sistema più semplice, ovvero quello di accedere nel pannello di amministrazione e servirsi della sezione dedicata per la gestione della cache. Per questo motivo, vi indichiamo brevemente tutti i metodi che possiamo utilizzare per compiere l’azione di svuotare tutte le cache.

1) Dal pannello di Amministrazione

Utilizziamo il pannello di amministrazione per pulire tutte le cache via GUI:

  1. Entrare nel tab “SETUP”
  2. Cliccare sull’icona di cancellazione di tutte le cache
  3. Aggiornare il browser

2) Dalla Linea di commando

Questo è un processo che spesso passa inosservato, ma che è molto comodo in situazioni come quella di cui sopra, ovvero quando si sposta un’installazione di EzPublish. In sistemi a base Unix, è sufficiente utilizzare i seguenti comandi:

cd /percorso/di/ezpublish;
./bin/php/ezcache.php --clear-all --purge;

Se invece si utilizza un sistema Windows, i comandi da utilizzare sono i seguenti

# cd c:/web/pro/ezpublish/doc;/bin/php/ezcache.php --clear-all --purge;
c:\php\php .

3) Procedimento manuale

E’ anche possibile pulire le cache a mano, nel caso in cui non sia possibile utilizzare uno dei metodi precedenti. Per fare questo, è sufficiente seguire questa procedura (per sistemi Unix – per sistemi Windows è sufficiente cancellare le medesime cartelle):

cd /percorso/di/ezpublish;
rm -vrf /var/cache;
rm -vrf /var/<tipo di installazione(ezwebin_site, ezflow_site,ecc)>/cache


Joomla ha la caratteristica di essere estremamente versatile, e permette di installare i proprio moduli e componenti in maniera semplice e pulita, promuovendo sì l’utilizzo del CMS “a scatola chiusa”, ma anche lo sviluppo di elementi ad hoc per estenderne le funzionalità.

In questo ambito può essere davvero utile conoscere il meccanismo di funzionamento delle sessioni in Joomla. A differenza di quanto si crede, Joomla può essere considerato un vero e proprio framework, con le sue API e tutto ciò che serve per sviluppare componenti realmente e completamente integrati con il sistema.

Uno di questi oggetti, sicuramente tra i principali, è il JFactory: mediante questo oggetto infatti è possibile tra le altre cose gestire ad esempio le connessioni con il database, e, per l’appunto, le sessioni. Vediamo il procedimento esatto.

Il primo passo è recuperare la sessione e salvarla in una variabile che ne permetta l’utilizzo:

$session =&JFactory::getSession();

Notiamo che utilizziamo l’oggetto JFactory per salvare all’interno della variabile $session un riferimento alla sessione, che possiamo utilizzare per settare un valore:

$my_value = “variabile di sessione”;

$session->set(‘my_value’, $my_value);

In questo modo utilizziamo l’istanza della sessione precedentemente recuperata per memorizzare la variabile $my_value all’interno della sessione stessa. Il nome del parametro ‘my_value’ non deve ovviamente essere per forza uguale a quello della variabile ($my_value), anche se è buona norma utilizzare lo stesso nome per il parametro e per la variabile, in modo da facilitare la programmazione.

Il valore precedente salvato in sessione è facilmente recuperabile attraverso il seguente comando:

$my_value = $session->get('my_value');

Come possiamo vedere, quindi, il framework Joomla mette a disposizione tutta una serie di strumenti che facilitano il compito dello sviluppatore: è importante conoscere tali strumenti, perchè sono stati concepiti proprio per facilitare l’integrazione del nostro codice con quello del CMS, integrazioni da implementare nel modo corretto, se vogliamo che il nostro sistema rimanga stabile e sicuro.



Quando si utilizza il settaggio di default di EzPublish, l’inoltro delle mail (ad esempio quelle per gestire la modifica della password) potrebbe non funzionare correttamente. La ragione è semplice: qmail, per funzionare regolarmente, necessita di configurazioni mail differenti da quelle che EzPublish ha per default.

Per permettere il corretto inoltro delle mail, dobbiamo settare alcuni parametri di configurazione del file

settings/override/site.ini.append.php

Nel caso in cui si utilizzi il protocollo SMTP per l’invio della posta, è necessario utilizzare una configurazione molto simile alla seguente:

[MailSettings]
Transport=SMTP
AdminEmail=tuamail@mail.com
EmailSender=tuamail@mail.com
#Beware about white space at end of each line
TransportServer=localhost
HeaderLineEnding=%0D%0A
TransportPort=25
TransportUser=
TransportPassword=

Nel caso invece si utilizzi sendmail, la configurazione deve essere simile alla seguente:

[MailSettings]
Transport=sendmail
AdminEmail=tuamail@tuamail.com
EmailSender=tuamail@tuamail.com
#Beware about white space at end of each line
HeaderLineEnding=auto
Dopo queste modifiche è necessario svuotare la cache delle impostazioni INI. Se l'invio delle mail
non dovesse ancora funzionare, allora potremmo essere di fronte a uno dei seguenti casi:
  1. Problema: Le mail arrivano con una Header scorretta utilizzando sendmail
    Soluzione: E’ nececssario cambiare il valore della direttiva HeaderLineEnding in “auto”
  2. Problema: Utilizzando il protocollo SMTP le mail non arrivano a destinazione
  3. Soluzione Qualche impostazione potrebbe non essere corretta. Ricontrollare il blocco di codice relativo
  4. Problema: La mail non arrivano quando la piattaforma EzPublish e il server mail girano su macchine diversa.
    Soluzione:L’inoltro locale delle mail potrebbe essere ancora attivo. Disabilitarlo dal proprio pannello di hosting ( nel caso di Plesk: Domain->Mail->Disable/Enable Switch )
  5. Problema: Il protocollo SMTP non funziona con EzPublish 4.0.0
    Soluzione: Questo è un bug. Eseguiamo l’upgrade a EzPublish 4.0.1 o eseguiamo il path del file ezsmtp.php
  6. Problema: Le configurazione di cui sopra non funzionano
    Soluzione: Ci potrebbe essere uno spazio bianco alla fine del codice. Rimuovetelo.


EzPublish è un prodotto davvero interessante. Proprio per questo motivo, abbiamo deciso di creare una sezione dedicata a questo framework.

E’ un prodotto per certi versi molto complesso, per il quale la curva di apprendimento è sicuramente elevata, ma una volta che si prende possesso delle sue funzionalità, si ha a disposizione un vero e proprio ambiente di sviluppo per portali web.

Prima di iniziare lo sviluppo, è buona norma disabilitare la cache del template di EzPublish. EzPublish infatti usa la cache per velocizzare il caricamento delle pagine, ed incrementare le perfomance del portale in ambiente di produzione.

In ambiente di sviluppo, però, questo meccanismo rallenta di molto il lavoro, perchè con la cache attiva, è necessario ad ogni modifica eseguire il “flush” (ovvero lo svuotamento) della cache per vedere le modifiche al portale.

Per eseguire il “flush” è necessario effettuare l’accesso all’interfaccia di amministrazione e:

  1. Cliccare sul tab Impostazioni.
  2. Cliccare sul bottone Svuota tutte la cache.

In aggiunta, dobbiamo disabilitare il caching del template in fase di compilazione. Per fare questo  e permettere quindi di visualizzare “al primo colpo” le modifiche effettuate dobbiamo disalibitare le seguenti cache:

  • compilazione del template
  • cache della vista
  • cache di override

Le configurazioni per disabilitare queste sono contenuto all’interno del file di configurazione

/settings/site.ini

Le configurazioni da sdisabilitare sono le seguenti:

[TemplateSettings]

TemplateCompile=disabled 

[ContentSettings]

ViewCaching=disabled 

[OverrideSettings]

Cache=disabled

Custom Frontpage Template

Le performance del nostro portale EzPublish saranno notevolmente ribassate, durante la fase di sviluppo, avendo appunto disabilitato le cache. Ovviamente le cache dovranno essere riabilitate prima che il sito passi all’ambiente di produzione.



Capita a volte di voler integrare al nostro portale Joomla delle piccole funzionalità utilizzabili ovunque nel sito ma che non giustificano lo sviluppo di un intero componente. L’implementazione di un modulo sarebbe la situazione perfetta, ma normalmente un modulo Joomla viene inserito nel template del portale, e questo è limitante per alcune funzionalità.

Ma come possiamo fare allora per non rinunciare al nostro progettino?? Ecco i passi per risolvere il problema….ed è semplicissimo!!

Per inserire un modulo all’interno di un articolo si deve usare all’interno del corpo del testo dell’articolo il commando “{loadposition xx}” seguendo queste procedura:

  1. Creiamo un modulo e assegnamoli una posizione che non generi conflitti con una posizione già esistente nel template. E’ possibile digitare all’interno della posizione un valore piuttosto che sceglierlo tra quelli disponibili. Per esempio, potremmo utilizzare il valore “myposition”.
  2. Ora è necessario assegnare il modulo all’elemento o agli elementi del menu che contiente gli articoli in cui vogliamo che il modulo venga visualizzato. E’ anche possibile assegnare il modulo a tutti gli elementi del menu.
  3. Il passo finale: editiamo l’articolo e lì dove vogliamo che sia mostrato inseriamo il testo “{loadposition myposition}” nel contenuto del testo.

Effettuata questa semplice procedura, il modulo verrà mostrato correttamente nell’articolo, esattamente nella posizione in cui abbiamo inserito la dicitura “{loadposition myposition}” dove “myposition” è la posizione che abbiamo assegnato precedentemente al modulo.



La promozione e lo studio del posizionamento di un sito Joomla non è un’operazione facile. Questo articolo traccia alcune linee guida per presentare tecniche generali SEO (Search Engine Optimization): questo è un campo vastissimo, con migliaia di tecniche differenti da adottare a seconda dello scopo che si vuole raggiungere. Con questa guida, restringiamo il campo a chi intende migliorare il posizionamento dei propri siti in Joomla: sarebbe impensabile esaurire un tal argomento in un solo articolo.

Con il termine SEO si intendono tutte quelle attività che servono a migliorare il posizionamento di una pagina web nei risultati forniti dai motori di ricerca. Per chi non ha conoscenze approfondite di un server web, come apache, ma utilizza Joomla come piattaforma, può appoggiarsi ad alcuni componenti che fanno molto del lavoro che bisognerebbe fare “a mano”. La cosa migliore sarebbe imparare ad utilizzare i server web ed in particolare apache, uno tra i migliori prodotti della sua categoria: ma ci rendiamo conto che lo studio di questo prodotto può risultare per molti davvero ostico, ed allora…ecco due dritte su come superare questo ostacolo!

Innanzitutto è fondamentale seguire questi semplici passi:

  1. Ogni pagina del sito deve avere un campo <title> diverso. In più, il titolo della pagina dovrebbe contenere le parole chiave relative al contenuto della pagina stessa.
  2. Il titolo del contenuto della pagina deve essere lo stesso del campo <title>: bisogna solo fare attenzione a non ripetere troppe volte le keywords.
  3. E’ di fondamentale importanza linkare sempre le parole chiave o più rilevanti del contenuto a risorse esterne o interne. La maggior parte dei motori di ricerca, tra cui ovviamente Google, premia le risorse valide e permette di salire nei risultati di ricerca.
  4. Ogni volta che inseriamo un contenuto Joomla abbiamo la possibilità di compilare i metatag description e keyword in modo da differenziarli e specificarli per ogni articolo che inseriamo. Questo è uno degli elementi più importanti.
  5. Bisogna curare anche il contenuto, prestando attenzione che il tema trattato sia originale e in relazione alle tematiche principali trattate dal sito.
  6. Comunicare con il mondo esterno, cercare collaborazioni e scambi di link testuali nelle homepage di siti con i quali si hanno partnership: questo permette di aumentare il page rank, e di consegueza le posizioni nei risultati di una ricerca.

Vi sono diversi componenti e moduli Joomla che aiutano a completare questi passi: come precedentemente suggerito, sarebbe di gran lunga consigliato gestire il tutto “a mano”, per avere più controllo e coscienza di ciò che succede. Tuttavia il componente “sh404SEF” è sicuramente il migliore per quel che riguarda l’URL Rewriting. Questa tecnica consiste nell’utilizzare URL modificati prima di reperire le risorse che gli stessi identificano, per una varietà di scopi, come appunto migliorare il posizionamento, oppure prevenire link indesiderati o controllare alcune delle principali funzionalità fornite dal protocollo HTTP per i server web.

Un altro elemento fondamentale, ma non legato a Joomla, è rappresentato dalle sitemap: ogni motore di ricerca principale ( Google, Yahoo, ecc ) mette a disposizione non solo strumenti per la gestione, ma addirittura strumenti che generano la sitemap automaticamente in base all’URL che passiamo al generator. Una sitemap è semplicemente una pagina web che in qualche modo riassume tutto il contenuto del sito, che oltre a facilitare la navigazione del sito permette di facilitare la scansione del sito da parte dei crawler dei motori di ricerca.

Una volta generata la sitemap ed inserita nella cartella del nostro sito, è convenitente a questo punto segnalarla ai motori di ricerca attraverso la pagina appropriata, in modo da velocizzare il riconoscimento e l’eventuale correzione di errori. La pagina in questioneè norlmalmente raggiungibiledagli strumenti gestione che il motore mette a disposizione per le sitmap.

Eseguendo questi piccoli accorgimenti, si potranno iniziare a vedere dei miglioramenti: bisogna sempre tenere presente che le tecniche SEO sono caratterizzate dalla grande difficoltà per cui i risultati di tali applicazioni non sono visibili nell’immediato, ma richiedono tempo, costanza e applicazione. Bisogna avere pazienza per ottenere dei risultati soddisfacenti, lavorando costantemente per tempi che sono nell’ordine di mesi. Quindi non ci dobbiamo aspettare dei miglioramenti improvvisi: pazientate, e seguite sempre le linee guida o le tecniche ufficiali fornite dai motori di ricera, perchè così come i miglioramenti si vedono nel tempo, anche le catastrofi hanno la medesima caratteristica! ;)



Joomla è oramai uno dei CMS (Content Management System) più affermati e utilizzati, sia per la sua facilità d’utilizzo sia per la sua modularità, che permette di installare estensioni con pochi passi.

Ma Joomla è anche molto apprezzato dagli addetti ai lavori, da chi ogni giorno si trova a configurare e integrare con la struttura del CMS elementi software personalmente sviluppati: nell’articolo presente a questo indirizzo è possibile leggere una guida che spiega chiaramente la distinzioni tra quelli che rappresentano gli elementi principali della struttura di questo CMS: i componenti, i mambots e i moduli.

Qui trattiamo esclusivamente l’implementazione e lo sviluppo dei moduli: questi possono essere visti come delle entità ausiliarie rispetto ai componenti, entità che vengono visualizzate esclusivamente all’interno delle sezioni definite nel template ( e qui richiamamibili attraverso la funzione MosLoadModules() ).

Lo sviluppo di un modulo richiede almeno la creazione di due file:

  • il file mod_nomemodulo.php rappresenta il file PHP che contiente il codice principale del modulo;
  • il file mod_nomemodulo.xml che rappresenta il file di installazione del modulo: qui sono contenute tutte le informazioni necessarie all’installazione, come i parametri, le immagini, e il nome di questo file, come per il precedente deve avere un nome preciso perchè rappresenta l’ “oggetto” che stiamo creando.

Ad esempio, supponiamo di implementare un modulo che estenda un componente di nostra creazione, in modo che il modulo recuperi e permetta la visualizzazione di alcuni record del nostro componente secondo parametri che possono essere configurati attraverso il modulo stesso (ordine, tipologia di lemento, ecc..). Allora potremmo chiamare i file del nostro modulo in questo modo:

  • mod_list_myelements.php
  • mod_list_myelements.xml


Una volta creati questi file è sufficiente comprimerli in un pacchetto .ZIP o TGZ e installarli attreverso l’installer-moduli di Joomla (Installazioni—>Moduli) raggiungibile dal pannello di amministrazione.

File di installazione del modulo

Vediamo un esempio commentato di file di installazione del modulo, nel nostro caso il file mod_list_myelements.xml.

/**INTESTAZIONE FILE XML**/
<?xml version=”1.0″ encoding=”iso-8859-1″?>
<mosinstall type=”module” version=”1.0.0″>
/**FINE INTESTAZIONE FILE XML**/

/**DATI DELL’AUTORE DEL MODULO E DESCRIZIONE**/
<name>List Elements</name>
<author>Marco Lecce</author>
<creationDate>January 2008</creationDate>
<copyright>(C) 2008 Marco Lecce. All rights reserved.</copyright>
<license></license>
<authorEmail>yourmail@
yourmail.com</authorEmail>
<authorUrl>www.yoursite.com</authorUrl>
<version>1.0.0</version>
<description>Questo modulo elenca gli elementi in base a parametri di configurazione.</description>
/**FINE DATI DELL’AUTORE DEL MODULO E DESCRIZIONE**/

/**
ALL’INTERNO DEL TAG files VANNO INSERITI TUTTI I FILE CHE COMPONGONO IL MODULO: AD ESEMPIO SE IL MODULO UTILIZZA IMMAGINI PARTICOLARI, POSSIAMO DICHIARARLE QUI
**/

<files>
<filename module=”mod_list_myelements”>mod_list_myelements.php</filename>
(ESEMPIO DI SECONDO FILE<filename module=”mod_list_myelements”>image.jpg</filename>)

</files>

/**DICHIARAZIONE PARAMETRI MODULO: QUESTA PARTE E’ FACOLTATIVA; QUI DEFINIAMO TRE PARAMETRI**/
<params>
/**
CONFIGURAZIONE PRIMO PARAMETRO:
“count” -> nome nel database del campo del componente che vogliamo controllare con il modulo
“type” -> il tipo del parametro sarà text, cioè il parametro è una casella di testo
“default” -> valore di default
**/
<param name=”count” type=”text” default=”20″ label=”Contatore” description=”Il numero di elementi (default 20)” />
/**
CONFIGURAZIONE SECONDO PARAMETRO:
“order” -> nome nel database del campo del componente che vogliamo controllare con il modulo
“type” -> il tipo del parametro sarà list, cioè il parametro è una select da cui potremmo scegliere tre opzioni
“default” -> valore di default
**/
<param name=”order” type=”list” default=”order_list” label=”Ordinamento” description=”Stabilisce la modalità di ordinamento delle news”>
<option value=”v1″>Valore1</option>
<option value=”v2″>Valore2</option>
<option value=”v3″>Valore3</option>
</param>
/**
CONFIGURAZIONE TERZO PARAMETRO:
“type” -> nome nel database del campo del componente che vogliamo controllare con il modulo
“type” -> il tipo del parametro sarà list, cioè il parametro è un radio box da cui potremmo scegliere due opzioni
“default” -> valore di default
**/
<param name=”type” type=”radio” default=”ASC” label=”Verso dell’ordinamento” description=”Stabilisce il verso dell’ordinamento “>
<option value=”ASC”>Crescente</option>
<option value=”DESC”>Decrescente</option>
</param>
</params>
/**FINE DICHIARAZIONE PARAMETRI MODULO**/
</mosinstall>

I commenti dovrebbero essere piuttosto chiari: una volta installato il componente dal pannello di amministrazione, andando nella sezione dedicata ai moduli, e cliccando sul nostro appena installato, sarà possibile configurare il comportamento del modulo nel frontend, attraverso i parametri che abbiamo dichiarato.

Codice del modulo

Questo è il file principale, che contiene cioè tutto il codice del modulo. Ora, in questo file, in realtà, noi possiamo scrivere tutto il codice PHP che ci serve, perciò più che fare un esempio di come scrivere questo tipo di file, daremo le indicazioni su come è possibile utilizzare alcune direttive che chiariscono le potenzialità dei moduli.

  • defined( ‘_VALID_MOS’ ) or die( ‘Restricted access’ );
    E’ importantissimo inserire questa riga di codice come prima nel file del modulo: in questo modo evitiamo l’accesso diretto al file, cioè impediamo l’accesso al file dall’esterno di Joomla. Dimenticarsi questa riga non compromette il funzionamento del modulo, ma apre falle nella sicurezza del portale.
  • $ordering = $param->get(‘order’);
    Con questa riga di codice PHP non facciamo altro che assegnare alla variabile $ordering il valore del parametro ‘order‘ che abbiamo scelto nel backend, cioè dall’amministrazione del modulo: nel nostro caso, ‘order‘ l’abbiamo creato come select con tre opzioni, e quindi dall’amministrazione del modulo possiamo assegnare uno di questi tre valori al parametro, che possiamo recuperare nel frontend attraverso appunto questa riga di codice.

Ora dovrebbe essere chiaro come sia possibile intergrare funzionalità diverse a qualsiasi elemento della struttura di Joomla attraverso i moduli: la vera forza di questo CMS è proprio la versatilità che caratterizza non solo l’utilizzo, ma anche lo sviluppo di applicazioni basate su questo Content Managment System.