domenica 1 giugno 2008

Joomla 1.5: Inserire HTML, Javascript o PHP in un articolo

Tutti coloro che hanno avuto la necessità di inserire codice HTML o Javascript in contenuti Joomla! si saranno resi conto di quanto effettuare questa operazione con un editor WYSIWYG sia difficoltoso o quantomeno scomodo.

Ogni editor ha un funzione per visualizzare e modificare direttamente il sorgente html del contenuto e questo sembrerebbe risolvere il problema, ma non è così: infatti se utilizziamo questa funzione per inserire codice html o Javascript, al momento di salvare il contenuto ci accorgeremo che parte (molto spesso gran parte) del codice che abbiamo inserito è stato rimosso.

Questo accade perché di solito gli editor sono configurati per accettare solo un insieme limitato di tag html, e rimuovere automaticamente tutti gli altri. Questa non deve considerarsi una limitazione quanto piuttosto una misura di sicurezza importante soprattutto per i siti che consentono l'inserimento di contenuti da parte dei visitatori e che devono cautelarsi contro l'inserimento di codice o script potenzialmente pericolosi.

Detto questo resta il problema.

Una possibile soluzione consiste nel disabilitare l'editor WYSIWYG. In questo modo possiamo inserire html e Javascript nel contenuto senza alcun tipo di filtro e, terminata l'operazione e salvato il contenuto, riabilitare l'editor WYSIWYG. Questa soluzione non è ideale: infatti se a distanza di tempo abbiamo bisogno di apportare modifiche al contenuto è facile dimenticarsi che questo contiene codice inserito direttamente ed effettuare le modifiche con l'editor WYSIWYG abilitato. In questo modo al momento del salvataggio i filtri 'mutileranno' il codice inserito in precedenza con le conseguenze che è facile immaginare.

Un'altra possibilità è l'utilizzo di apposite estensioni di terze parti. Ce ne sono diverse, a mio parere, una delle migliori per questo tipo di situazioni è Jumi.

Il funzionamento di Jumi è semplicissimo: per prima cosa inseriremo il codice html e/o Javascript che si desidera in un file e ne faremo l'upload sul nostro sito (meglio se in un cartella apposita).

Poi utilizzeremo un semplice comando plugin per passare a Jumi il percorso del file che sarà incorporato nel nostro contenuto.

Esempio di utilizzo di Jumi

Installate Jumi come qualsiasi plugin Joomla! Attivatelo da Gestore plugin. Create poi un semplice file di testo salve.html con questo contenuto

<p>Salve da <b>Jumi</b></p>
<script type="text/javascript">
<!--
document.write('Un saluto a tutti!');
//-->
</script>

Via FTP create una cartella jumi_includes all'interno della stessa cartella dove è installato Joomla! e inseritevi il file salve.html

Create un nuovo articolo e inserite nel contenuto questo comando

{jumi [jumi_includes/salve.html]}

Salvate, pubblicate l'articolo e visualizzatelo nel frontend (non con la funzione anteprima articolo presente nel backend). Vedrete che il codice html e lo script sono stati inclusi nel contenuto. Lo script ovviamente è stato eseguito dal browser e quindi è visibile l'output dell'istruzione document.write()

Il percorso del file da includere da passare a Jumi è sempre relativo alla cartella in cui è installato Joomla! a meno che non si specifichi un diverso percorso di base nella configurazione del plugin.

Includere codice PHP in un articolo

E se volessimo includere codice PHP in un articolo? Gli script PHP, come si sa, non sono eseguiti nel browser, ma dal server per cui il metodo che abbiamo visto all'inizio, cioè l'inclusione diretta nel contenuto previa disabilitazione dell'editor WYSIWYG, non funziona.

Anche in questa situazione Jumi ci viene in aiuto. Create con un normale editor di testo un file di nome salve.php con questo contenuto (un classico)

<?php
echo 'Salve Mondo!';
?>

Inseritelo via FTP nella stessa cartella utilizzata in precedenza jumi_includes. A questo punto il comando da inserire nell'articolo è semplicemente

{jumi [jumi_includes/salve.php]}

Salvate e visualizzate l'articolo come in precedenza: la scritta di saluto apparirà nel vostro contenuto nella posizione dove avete inserito la stringa di comando.

Oltre al plugin, esiste anche un modulo Jumi che vi consente di inserire html, javascript, php in una qualsiasi posizione modulo del vostro template.

Sul sito dello sviluppatore trovate maggiori dettagli ed esempi.

2 commenti:

Anonimo ha detto...

Funziona, ma se si ha abilitata la versione in pdf degli articoli, il codice compare in chiaro!
Cosa si può fare?
Non vorrei "perdere" la versione in pdf...

Massimo ha detto...

La cosa dovrebbe essere indagata più approfonditamente e non ho il tempo di farlo, può darsi che quello che riscontri non sia un problema specifico di Jumi, ma sia Joomla che non esegue il codice del plugin quando viene creato il pdf, quindi la stringa tra parentesi graffe resta nel testo.

Posta un commento

Nota. Solo i membri di questo blog possono postare un commento.