Joomla.it Forum

Joomla! 1.0.x (versione con supporto terminato) => Le voci di Joomla.it (solo per versione Joomla 1.0.x) => : .Andrea S. 12 Sep 2007, 16:10:50

: [solved] Visualizzare modulo a un determinato tipo di utenti (o il contrario)
: .Andrea S. 12 Sep 2007, 16:10:50
Problema:
Come fare per far visualizzare un modulo solo ad un determinato tipo di utenti. (Author, editor)

al momento ho risolto con questo hack: Hide any module for logged in users ONLY (http://forum.joomla.org/index.php/topic,114630.msg795120.html#msg795120)

che in realtà fa il contrario ma ovviamente se si rovescia il problema....  :D
Funziona bene e ve lo consiglio.

Ma siccome non mi piace modificare il core di joomla vorre trovare una soluzione alternativa.

Avevo pensato di inserire nel template un modulo e caricarlo solo se l'utente loggato era di una certo tipo (Author), il codice doveva essere questo:
<?php if($my->usertype == "author"){?>
    <?php echo mosLoadModules ( 'user9',-3 );?>
}else{
<?php } ?>

Mettendo poi i moduli ad ok risolverei il mio personalissimo problema.

Ma........ non funziona  :(

Che sbaglio?
Mi sa che mi sto perdendo in un bicchiere d'acqua...
Grazie mille
: Re: Visualizzare modulo a un determinato tipo di utenti (o il contrario)
: gallus 12 Sep 2007, 16:38:20
Cosa ti succede così?
Ti sparisce tutto il Container nel caso in cui non sia un autore?
: Re: Visualizzare modulo a un determinato tipo di utenti (o il contrario)
: .Andrea S. 12 Sep 2007, 16:51:09
mi sparisce sempre, anche nel caso sia autore

Ho provato acnhe con administrator, guest, etc
: Re: Visualizzare modulo a un determinato tipo di utenti (o il contrario)
: gallus 12 Sep 2007, 18:33:28
strtolower( $my->usertype ) == 'author'

Prova così
: Re: Visualizzare modulo a un determinato tipo di utenti (o il contrario)
: .Andrea S. 12 Sep 2007, 21:42:47
perfetto!  ;D

Devo levare l'else però... giusto?

<?php if(strtolower( $my->usertype ) == 'author'){?>
    <?php echo mosLoadModules ( 'author',-3 );?>
<?php } ?>



e se volessi farlo visualizzare a 2 tipi di utenti? (l'appetito vien mangiando  ;D)
Grazie ancora
: Re: Visualizzare modulo a un determinato tipo di utenti (o il contrario)
: napo 12 Sep 2007, 23:46:59
Certo che sto codice non si può proprio guardare... :-X
: Re: Visualizzare modulo a un determinato tipo di utenti (o il contrario)
: gallus 13 Sep 2007, 07:34:12
Certo che sto codice non si può proprio guardare... :-X

napo ha perfettamente ragione

:
<?php
  
if(strtolower$my->usertype ) == 'author'){ 
   echo 
mosLoadModules 'author',-);
  }
?>


se vuoi rendere attivo questo comportamento per 2 tipi di utenti basta che inserisci:

:
if(strtolower( $my->usertype ) == 'author' ||
   strtolower( $my->usertype ) == 'altroTipo'){
...
}

sostituendo altroTipo con il tipo che ti interessa, al contrario se vuoi un comportamento diverso ti serve else.

Infine, se vuoi specializzare il comportamento per ogni tipo di utente prendi  in considerazione il costrutto swith ;)

: Re: Visualizzare modulo a un determinato tipo di utenti (o il contrario)
: .Andrea S. 13 Sep 2007, 11:28:22
che dire... semplicemente magnifico.
Grazie mille!

.....mi sa che mi devo mettere a studiare  ;)
: Re: Visualizzare modulo a un determinato tipo di utenti (o il contrario)
: napo 13 Sep 2007, 12:25:33
:
if(strtolower( $my->usertype ) == 'author' ||
   strtolower( $my->usertype ) == 'altroTipo'){
...
}

Anche questo codice non è bellissimo... ;D
Sarebbe meglio creare un array di stringhe in cui memorizzare tutti i tipi da controllare e poi verificare se usertype è dentro l'array. Qualcosa del tipo:
:
<?php
$tipiDaControllare 
= array("author""altroTipo"ecc...);
if (
in_array(strtolower($my->usertype), $tipiDaControllare)) {
    
// fai quello che devi fare
}
?>

: Re: [solved] Visualizzare modulo a un determinato tipo di utenti (o il contrario
: .Andrea S. 13 Sep 2007, 13:05:07
Magnifico anche questo!   ;D

Grazie mille anche a te Napo
: Re: Visualizzare modulo a un determinato tipo di utenti (o il contrario)
: gallus 13 Sep 2007, 14:07:10
...
Anche questo codice non è bellissimo... ;D
...

ok... ma niente eufemismi. :(