martedì 30 settembre 2008

Joomla e Drupal a confronto. Creare un blog

Visto che Joomla e Drupal sono due cms tra i più conosciuti e sono spesso messi a confronto tra loro, voglio provare a condurre sul blog un piccolo esperimento: creare un sito di esempio con entrambi i prodotti e confrontare le diverse soluzioni offerte per realizzare funzionalità simili.

Il sito che creeremo sarà un blog. È vero che ci sono prodotti più specifici per creare blog, ma d'altra parte questa è una tipologia di sito conosciuta da tutti e non troppo complessa da sviluppare per cui penso sia l'ideale per questo tipo di esperimento.

Le funzionalità saranno quelle tipiche di un blog.

  • Post e commenti
  • Categorie
  • Pagina profilo utente
  • Feed

Vedremo se aggiungere altro strada facendo.

Saranno necessari diversi post per completare l'opera. Per il momento ho creato i due siti di prova

demo.latenight-coding.com/joomla-blog/
demo.latenight-coding.com/drupal-blog/

Le versioni dei due cms sono Joomla 1.57 e Drupal 6.4. I template scelti, rispettivamente, Siteground e Light Fantastic; l'aspetto grafico non è comunque quello che mi interessa di più in quanto entrambi i cms consentono di cambiare template con facilità. Di struttura e contenuto inizieremo a parlare dalla prossima volta.

Prima di concludere raccomando i seguenti articoli in tema con l'argomento in quanto trattano dell'utilizzo di Joomla e Drupal per sviluppare un blog.

Creare un vero e proprio blog con Joomla!
Usare Drupal per gestire un blog

Non è detto comunque che i siti sviluppati seguiranno la struttura e utilizzeranno tutti i componenti illustrati in questi articoli.

domenica 28 settembre 2008

Joomla 1.5, rimuovere Mootools dall'header

Chiunque abbia dato uno sguardo al sorgente html delle pagine di un sito realizzato con Joomla 1.5 avrà notato che la prima pagina e le pagine interne dei contenuti (sezioni, categorie, articoli) contengono nell'header queste righe

<script type="text/javascript" src="/media/system/js/mootools.js">
</script>
<script type="text/javascript" src="/media/system/js/caption.js">
</script>

Lo script caption.js serve alla visualizzazione automatica della didascalia (caption) delle immagini: per maggiori dettagli rimando al post che ho pubblicato su OneCms.it, Generare le didascalie delle immagini in Joomla.

Ora non dico che le didascalie delle immagini non siano utili, ma ci sono molti siti che ne fanno tranquillamente a meno o le gestiscono diversamente. Per cui, con tutto l'affetto per Mootools, forse è preferibile non includerlo nell'header, con i sui 70k e oltre, quando non serve.

La cosa si può fare commentando la riga 37 all'inizio della funzione display() in

.../components/com_content/controller.php

in modo che risulti così

//JHTML::_('behavior.caption');

In questo modo si evita il caricamento di caption.js e di conseguenza di mootools.js. Quel 'di conseguenza' forse non è immediatamente ovvio, i più curiosi potranno guardare il sorgente della funzione commentata sulla documentazione ufficiale. Ovviamente a questo punto non avremo più le didascalie alle immagini.

Si tratta di una modifica minima ad un file del core quindi affrontabile anche da parte dei più timorosi. D'altra parte annullare tutto e tornare alla situazione precedente non è certo difficile.

Dico subito, per fare risparmiare tempo a chi volesse provare, che se avete installato il template ja_purity (e, presumo, altri template di Joomlart) la cosa non funziona perché Mootools viene caricato comunque nel file index.php del template; si riesce invece a rimuovere da beez e da rhuk_milkyway, con altri template si tratta di provare.

Poi ci sono i moduli che necessitano di Mootools. Chiaro che se pubblicate uno di questi moduli su tutte le pagine del sito potete risparmiarvi la modifica perché il framework dovrà comunque essere sempre caricato.

Propongo questa cosa come semplice suggerimento. Soprattutto i fanatici dell'ottimizzazione ad ogni costo spero possano trovare spunti utili per qualche esperimento.

lunedì 8 settembre 2008

Mootools 1.2. Identificare browser e sistema operativo

Visto che Mootools 1.2 è stato rilasciato di recente, credo sia interessante iniziare a scrivere qualcosa su questa nuova versione del framework.

Per iniziare da qualcosa di semplice vediamo alcuni esempi di funzioni per determinare il nome, la versione e altre informazioni sul browser dell'utente. Visto che problemi di compatibilità fra browser sono sempre in agguato, spesso uno script deve essere in grado di compiere funzioni diverse a seconda del browser all'interno del quale viene eseguito.

Per fare questo si utilizzano alcuni metodi dell'oggetto Browser, inizializzato da Mootools e reso disponibile ai nostri script.

I browser vengono identificati in base al loro motore interno (rendering engine o layout engine). La funzione di un rendering engine è quella di visualizzare una pagina web così come la vediamo sullo schermo partendo dalle informazioni ricavate dal sorgente HTML (o XML) e dai fogli di stile CSS.

Si potrebbe dire che un'altra funzione non meno importante sia quella di rendere la vita dei web designer di tutto il mondo mai monotona e sempre ricca di sorprese grazie ai numerosi bachi e incompatibilità che fanno sì che lo stesso sorgente HTML mai produca lo stesso risultato visivo in tutti i browser.

Il nome del rendering engine in Mootools si ricava con

Browser.Engine.name

Esistono poi delle scorciatoie per individuare i diversi browser e relative versioni.

Identificare Internet Explorer

Il rendering engine di Internet Explorer è chiamato Trident.

if(Browser.Engine.trident) {
  alert('Internet Explorer');
  if(Browser.Engine.trident4) {
    alert('IE6');
  } else if(Browser.Engine.trident5) {
    alert('IE7');
  }
}

Identificare Mozilla o Firefox

Il rendering engine è chiamato Gecko

if(Browser.Engine.gecko) {
  alert('Mozilla / Firefox');
}

Identificare Opera

Il rendering engine è chiamato Presto

if(Browser.Engine.presto ) {
  alert('Opera');
  if(Browser.Engine.presto925 ) {
    alert('versione 9.25 o precedente');
  } else if(Browser.Engine.presto950 ) {
    alert('versione 9.50 o successiva');
  }
}

Identificare Safari o Google Chrome

Il rendering engine è chiamato Webkit

if(Browser.Engine.webkit ) {
  alert('Safari / Chrome / Webkit');
  if(Browser.Engine.webkit419) {
    alert('versione 419 o precedente');
  } else if(Browser.Engine.webkit420) {
    alert('versione 420 o successiva');
  }
}

Ricavare la versione del plugin Flash

Un'altra informazione che Mootools mette a disposizione è il numero di versione (major e build) del plugin Flash installato nel browesr.

alert(' Numero versione Flash: ' + 
Browser.Plugins.Flash.version);

alert('Numero build Flash: ' + 
Browser.Plugins.Flash.build);

Identificare il sistema operativo

Infine è possibile ricavare il sistema operativo dell'utente.

alert(Browser.Platform.name);
if(Browser.Platform.mac) {
  alert ('Mac');
} else if(Browser.Platform.win) {
  alert ('Windows');
} else if(Browser.Platform.linux) {
  alert ('Linux');
} else if(Browser.Platform.ipod) {
  alert ('Ipod');
} else if(Browser.Platform.other) {
  alert ('altro');
}

È tutto. Il sorgente completo dello script in un formato più adatto al copia e incolla lo trovate qui. Per testarlo è necessario anche scaricare Mootools 1.2 e includere lo script nell'header come nell'esempio.