Nascondere un modulo solo per gli utenti che effettuano il Login in un sito Joomla!

Poniamo il caso in cui un sito web realizzato con Joomla! abbia dei moduli nella sidebar, come riportato nella figura di seguito:

moduli public visibili
Moduli public visibili in Joomla!

In questo caso, per il solo scopo dimostrativo, ne sono stati impiegati solo 2:

  1. un modulo che raffigura un Post-it;
  2. il modulo di Log In per accedere a delle pagine riservate

Si vuol nascondere, per esempio, ad un utente precedentemente registrato e loggato nel sito, il primo modulo: Post-it. Quando questi verrà riconosciuto correttamente dal sistema, non vedrà il primo modulo durante tutta la sua permanenza nelle pagine del sito web.

Per ottenere il risultato, oggetto dell' articolo, non serve nessuna estensione particolare ma occorre semplicemente scrivere qualche rigo di codice PHP nel file "index.php" del template attivo.

A tal proposito si deve individuare la parte della pagina in cui sono stati inseriti gli snippet di codice xml per richiamare i moduli, come nell' esempio seguente:

<jdoc:include type="modules" name="post-it" style="xhtml" />
<jdoc:include type="modules" name="login" style="xhtml" />

Visto che deve essere il primo modulo ad essere interessato, lo snippet in questione deve essere incluso in una piccola funzione PHP:

<?php
// Setta l'oggetto utente
$user = &JFactory::getUser();
// Setta l'ID utente.
$userId = $user->get('id');
// Se l'ID utente = 0 il modulo non viene visualizzato
if ($userId == 0) :
// In questo punto viene scritto lo snippet che richiama il modulo da nascondere, al di fuori del codice PHP
?>
<jdoc:include type="modules" name="post-it" style="xhtml" />
<?php endif; ?>

Immediatamente dopo la chiusura del codice PHP rimane invariato l' altro snippet che richiama il modulo per il Log In:

<jdoc:include type="modules" name="login" style="xhtml" />

Visualizzazione del front-end del sito

Dopo aver fatto l' integrazione del codice appena postato, non ci resta che provare a vedere se il tutto è andato a buon fine. Si richiami il sito e si inseriscano le credenziali di accesso per l' area privata. Ecco che, senza nessuna magia, quello che si vedeva precedentemente nella colonna di destra adesso è cambiato. L' unico modulo presente è quello di Log In con il nome dell' utente che ha effettuato l' accesso:

Modulo con utente loggato nel sito
Modulo con utente loggato nel sito

Semplice no? Probabilmente si vorrà dare un nome diverso al modulo, o ai moduli, da nascondere. Quello che c'è da fare è cambiare il solo nome della posizione modulo nel file "index.php" e riportare lo stesso nome, tra i tag <position> e </position> nel file "templateDetails.xml".

Con una semplice funzione si è riuscito a raggiungere lo scopo prefissato nel presente tutorial.

© www.extrowebsite.com - Grafica, layout, articoli e guide sono di esclusiva proprietà del webmaster - Tutti i diritti riservati