Nascondere modulo Joomla! per utenti registrati
Nascondere modulo Joomla! per utenti registrati
Extrowebsite

La visualizzazione di un modulo Joomla! avviene assegnando lo stesso ad una o più voci di menu. Infatti, nell'amministrazione del modulo è possibile scegliere la modalità "Public" oppure "Registered". Nell'articolo odierno viene spiegato come fare per nascondere un determinato modulo solo agli utenti che effettuano il login.

Nascondere un modulo con impostazione "public"

Poniamo il caso che si vuol nascondere il modulo banner di Joomla! Esso appare in tutte le pagine del sito in quanto, nella sua amministrazione è stata assegnata la proprietà "Public".

Modulo banner Joomla!
Modulo Banner Joomla!

Va detto che non deve essere installata alcuna estensione bensì inserire qualche rigo di codice PHP nel file index.php del template attivo.

Individuare la zona della pagina in cui sono stati inseriti gli snippet di codice per richiamare i moduli, come nell' esempio seguente:

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

In questo caso lo snippet che richiama il modulo deve essere sostituito dal codice che segue:

<?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="banner" style="xhtml" />
<?php endif; ?>

N.B. Il codice che richiama il modulo NON deve essere scritto 2 volte ma deve essere solo incluso nella funzione PHP

Effettuare il login da frontend

Modulo Login Joomla!
Modulo Login Joomla!

Se da frontend si effettua il login come utente "Registered", non appena il sistema ci ha riconosciuto, il banner visibile precedentemente non appare più.

Se si vuol nascondere un modulo differente al/ai modulo/i, non si deve fare altro che cambiare il nome della posizione nel file index.php e riportare lo stesso nome, tra i tag <position> e </position> nel file "templateDetails.xml".