Stella inattivaStella inattivaStella inattivaStella inattivaStella inattiva
 

Joomla mette a disposizione dell'utente il controllo se visualizzare un modulo basadosi sul menu.

 In questo momento mi riferisco alla versione 3 ma anche nelle precedenti versioni, non so se in tutte, è presente la stessa opzione. 

Nella versione 3 c'è il tab "Menu Assignment" dove si ha la possibilità di scegliere diverse opzioni di visualizzazione:

  • On all Pages
  • Only on the page selected
  • On all Pages except those selected
  • None

A VOLTE NON FUNZIONA 

A volte può capitare che il modulo che vogliamo visualizzare con un certo criterio non viene visualizzato o non viene nascosto. Insomma non succede quello che ci saremmo aspettati.

Personalmente a me è capitato che i moduli "Latest News" volevo visualizzarlo solo in home page ma non sempre funzionava. 

Dopo diverse ricerche ho capito il motivo ma forse è meglio dire ho capito il funzionamento di joomla e non si trattava quindi di un bug.

Per tutti gli articoli non collegati direttamente al menu, quando vengono aperti, la voce di menu non cambia. Se la voce di menu è Home, l'apertura di uno di questi articoli lascierà la voce di menu corrente Home con il risultato che la visibilità corrente è home nonostante avete aperto un articolo.

Se avete poche pagine basterà linkare ogni pagina al menu come "Single Article", diversamente mettete a menu un modulo che possa includere tutti gli articoli automaticamente. Io ho messo la voce di menu "All Category Blog".

 

DETERMINARE SE SIAMO IN HOME PAGE TRAMITE PHP

Come determinare se la pagina corrente è l'home page tramite codice php (server side) oppure Javascript / jQuery (client side)

Il seguente codice php utilizza le classi joomla per determinare e contrassegnare se la pagina corrente è l'home page oppure no.

In particolare, una volta determinata la pagina, crea un tag span con un id che di fatto non visualizza nulla ed attiva un flag con una variabile php.

Bene, il flag è utile per utilizzarlo in una if nella vostra pagina php, mentre l'id nello span puo' essere utile per sapere tramte ad esempio jQuery se siamo nella home page oppure no.

Il seguente codice andrebbe aggiunto nell'index.php del vostro template.

  

< ?php
$app = JFactory::getApplication();
$menu = $app->getMenu();
$lang = JFactory::getLanguage();
if ($menu->getActive() == $menu->getDefault($lang->getTag())) {
   $joomlaHomePage=1;
   echo '<span id="joomlahomepage"></span>';
} else {
    $joomlaHomePage=0;
    echo '<span id="joomlahomepageNO"></span>';
}
? >

 

 

Ed ecco come poter controllare tramite jQuery se siamo in homepage grazie allo span che abbiamo creato tramite il precedente codice.

if (jQuery('#joomlahomepage').length) {
   // Siamo in home page
};

 

 

- have fun -

 

REFERENCES

DISQUS - Leave your comments here