Joomla - Modificare modulo HTML personalizzato per inserire codice php. Anche su articolo.

 Stampa 

Valutazione attuale: 5 / 5

Stella attivaStella attivaStella attivaStella attivaStella attiva
 
Tweet Segui @Dillofacile

Come si sa, Joomla dispone nativamente di un modulo "custom" denominato "HTML personalizzato". Questo modulo, permette di inserire testo e tag HTML da poter visualizzare in una posizione del nostro template. Quello che non permette di fare questo modulo, è l' esecuzione di codice php. La cosa è voluta. Infatti, poter far eseguire codice php in un modulo poi pubblicato sul template del nostro sito joomla, può causare problemi di sicurezza al sito. E' anche vero, però, che esistono numerosi plugin e moduli che permettono l' inserimento di codice php all' interno di articoli o moduli. Quindi, onde evitare la continua installazione e proliferazione di componenti vari per qualsiasi funzionalità ci necessita aggiungere al sito, vediamo come fare per personalizzare il modulo "HTML personalizzato" affinchè accetti ed esegua il codice php contenuto al suo interno.

 

Applicheremo la tecnica dell' override. Creiamo un nuovo modulo "HTML personalizzato" da "Estensioni->gestione Moduli" e da quì icona nuovo. Nella finestra di popup scegliamo "HTML personalizzato".

htmlpers1

Diamo il titolo al modulo "Codice php" , salviamo e chiudiamo. Ora, preleviamo il file presente su rootdelsito/modules/mod_custom/tmpl/default.php e copiamolo su rootdelsito/templates/miotemplate/html/mod_custom. Se le cartelle html e/o mod_custom non esistono, creiamole. Ora, apriamo il file appena copiato ed apportiamo alcune piccole modifiche che permetterano di eseguire il codice php contenuto all' interno del modulo.

<?php
/**
 * @package Joomla.Site
 * @subpackage mod_custom
 * @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
 * @license GNU General Public License version 2 or later; see LICENSE.txt
 */
// no direct access
defined('_JEXEC') or die;
?>

<div class="custom<?php echo $moduleclass_sfx ?>" <?php if ($params->get('backgroundimage')): ?> style="background-image:url(<?php echo $params->get('backgroundimage');?>)"<?php endif;?> >
 <?php echo $module->content;?>
</div>

Modifichiamo il codice riportato sopra come segue:

<?php
/**
 * @package Joomla.Site
 * @subpackage mod_custom
 * @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
 * @license GNU General Public License version 2 or later; see LICENSE.txt
 */
// no direct access
defined('_JEXEC') or die;
$code = eval($module->content);
?>
<div class="custom" <?php if ($params->get('backgroundimage')): ?> style="background-image:url(<?php echo $params->get('backgroundimage');?>)"<?php endif;?> > 
<?php echo $code;?> </div>

Come si può notare, si tratta veramente di una modifica minima. Sfruttiamo la "eval" di php per interpretare i codice php. Bene, salviamo il file appena modificato chiamandolo "phpcode.php" e cancelliamo il "default.php". Avremo quindi sulla rootdelsito/templates/miotemplate/html/mod_custom il nostro phpcode.php.

Torniamo al modulo HTML personalizzato "Codice php" precedentemente salvato. All' interno della configurazione del modulo, selezioniamo il nuovo layout appena creato ed inseriamo un pò di codice php di prova. Ricordiamoci anche di assegnare una posizione al modulo e di assegnarlo a tutte le voci di menù che ci interessano.

 htmlpers2

Ora, spostandoci sul frontend del sito possiamo notare che il modulo visualizza il link della pagina che stiamo visitando (viene stampato il risultato della Juri::getIstance()->toString). Abbiamo quindi ottenuto , l' esecuzione dello script php all' interno del modulo. Da notare che, se commettiamo un errore sul codice php, tale errore verrà ovviamente visualizzato sul sito.

Altra cosa interessante. Possiamo inserire il codice php anche all' interno di un articolo. Infatti, è possibile utilizzare il tag loadposition posizione all' interno dell' articolo che stiamo scrivendo. Per esempio , ho scritto prorio su questo articolo un loadposition che mi carica il modulo che gestisce il pulsante "Mi Piace" di Facebook. Quindi, nel modulo che voglio caricare inserirò nella configurazione del modulo stesso una posizione template fittizzia (che non esiste nel template). Per esempio inseriremo nel modulo la posizione 'facebook' quindi, scriveremo racchiuso tra paretesi graffe, nel punto dell' articolo ove vogliamo compaia il nostro modulo:

loadposition facebook <-racchiuso tra parentasi graffe {}

$facebookLike = '

Ed ecco il risultato riportato qui' sopra. Bene, se questo tutorial vi è piaciuto , c'è proprio un "mi piace" quì sopra ! Per qualsiasi altra cosa potete inserire un commento.

 

 

Pensi che questo articolo possa essere d' aiuto anche ad altri? Allora condividilo subito nel tuo social preferito.

Tweet Segui @Dillofacile

Lascia i tuoi commenti

Login per inviare un commento
Registrati Password dimenticata

Posta commento come visitatore

    0
    termini e condizioni.

    Persone in questa conversazione

    Commenti (1)

    • Vecchi commenti Prima
    • Nuovi commenti Prima
    • Sottoscrivi tramite Email
    • Ospite - Ginux

      Permalink

      Ottimo articolo, semplice e allo stesso tempo esaustivo. Hai aperto un mondo, grazie!

      3 anni fa da 15048 Valenza, Province of Alessandria, Italy 8.644111000000066 45.0122876 http://maps.google.com/maps?z=15&q=45.0122876,8.644111000000066
      0 Mi piace Condividi URL breve: Facebook Twitter Google Plus

    Evidenza

    Preferiti

    Powered by Komento