Back to top

Autore Topic: [RISOLTO] Modulo visibile solo a utente "public" e non a registrati  (Letto 7195 volte)

Offline elisamu

  • Esploratore
  • **
  • Post: 91
  • Sesso: Femmina
  • Ola!
    • Mostra profilo
Ciao a tutti.

In un sito ho alcuni cataloghi visibili solo previa registrazione. Le copertine dei cataloghi però sono visibili a tutti su un modulo con slide show (sono immagini con link al catalogo).
I moduli che mi servono in realtà sono 2: il primo visibile solo all'utente public con un link alla pagina di registrazione/login, il secondo invece che sostituisca il primo quando l'utente è registrato e che ad ogni copertina quindi corrisponda il link del catalogo.


La domanda quindi è se posso rendere visibile solo all'utente public il promo modulo per poi nasconderlo al registrato o all'amministratore.


Grazie, Elisa.
« Ultima modifica: 16 Mar 2012, 13:24:48 da elisamu »
"La mente è come un paracadute. Funziona solo se si apre."
Albert Einstein

Offline .:Fox:.

  • Appassionato
  • ***
  • Post: 330
  • Sesso: Maschio
    • Mostra profilo
Ricordo che ne abbiamo discusso altre volte e sembra che non ci sia la possibilita' di visualizzare qualcosa solo agli anonimi.
Si potrebbe pero' ottenere con una modifica al template.
Semplicemente subito dopo la posizione modulo prescelta, ne inserisci una nuova da te creata e 2 righe di codice per subordinare la visualizzazione ai soli anonimi.
« Ultima modifica: 16 Mar 2012, 12:05:20 da .:Fox:. »

Offline elisamu

  • Esploratore
  • **
  • Post: 91
  • Sesso: Femmina
  • Ola!
    • Mostra profilo
Grazie Fox, molto gentile. Il php lo conosco poco (ma sono in via di approfondimento :) ), puoi darmi qualche informazione in più sulle 2 righine di codice?
"La mente è come un paracadute. Funziona solo se si apre."
Albert Einstein

Offline .:Fox:.

  • Appassionato
  • ***
  • Post: 330
  • Sesso: Maschio
    • Mostra profilo
Certamente.
Passo 1: ti prepari la nuova posizione. Faccio riferimento a beez_20, poi lo adatti al tuo template.
Diciamo che vuoi usare position-7.
Trovi nel template
Codice: [Seleziona]
<jdoc:include type="modules" name="position-7" style="beezDivision" headerLevel="3" />e ci aggiungi subito a seguire la nuova posizione:
Codice: [Seleziona]
<jdoc:include type="modules" name="position-guests" style="beezDivision" headerLevel="3" />poi non indispensabile, ma per avere la nuova posizione tra le scelte possibili, la aggiungi anche a templateDetails.xml
Codice: [Seleziona]
        <position>position-13</position>
        <position>position-14</position>
        <position>position-guests</position>

Passo 2: Ti prepari i due moduli.
Il primo e' facile: Nome: "per i soli utenti registrati". Posizione: position-7. Livello di accesso: Registered.
Sul secondo trascuri i livelli di accesso, perche' non puoi limitarlo agli anonimi. Quindi fai Nome: "per i soli utenti non loggati". Posizione: position-guests.

Passo 3: Inserisci una condizione
Torni nel template dove hai inserito la posizione al punto 1, e la modifichi cosi':

Codice: [Seleziona]
<!-- Conversione esplicita in bool perche' php e' particolarmente infido nei cast a bool automatici -->
<?php if (!(bool)JFactory::getUser()->id) { ?>
<jdoc:include type="modules" name="position-guests" style="beezDivision" headerLevel="3" />
<?php ?>

Quando l'utente fa il login, tutti i moduli dentro a position-guests non li vede piu'.
Ti funziona?
« Ultima modifica: 15 Mar 2012, 17:00:56 da F0X »

Offline elisamu

  • Esploratore
  • **
  • Post: 91
  • Sesso: Femmina
  • Ola!
    • Mostra profilo
Entro oggi provo, grazie mille, molto dettagliato e ottima spiegazione.
[/size]
[/size]Se funziona ti offro un gelato  :) . Se non funziona offro una birra  8)  che magari porta un po' di ispirazione e trovo un'altra soluzione.
"La mente è come un paracadute. Funziona solo se si apre."
Albert Einstein

Offline luca7761

  • Appassionato
  • ***
  • Post: 241
  • Sesso: Maschio
    • Mostra profilo
Veramente ottima spiegazione Fox! Molto utile!
Joomla è fantastico!

"Se poniamo a confronto il fiume e la roccia, il fiume vince sempre non grazie alla sua forza ma alla sua perseveranza." Buddha Gautama

Offline xplosion

  • Global Moderator
  • Instancabile
  • *****
  • Post: 4047
  • Sesso: Maschio
    • Mostra profilo

Offline .:Fox:.

  • Appassionato
  • ***
  • Post: 330
  • Sesso: Maschio
    • Mostra profilo
Ti ringrazio, ma ce n'e' una migliore.
Chiedo scusa, ma l'altra volta eravamo nel contesto di Joomla 1.5, e sono rimasto cerebralmente ancorato li', ma pensandoci bene la cosa e' facilmente gestibile con le ACL di Joomla 2.5.
Di seguito la configurazione necessaria. Penso di trascriverla sul wiki cosi' chiunque abbia miglioramenti nell'esposizione li potra' fare.

Configurazione

Gestione utenti: Gruppi di utenti
creare un nuovo gruppo e chiamarlo ad esempio "Anonimi". Accertarsi che il campo "Gruppo principale" sia impostato su "Public". Salvare e chiudere.

Gestione utenti: Livello di accesso
creare un nuovo livello e chiamarlo ad esempio "Livello anonimo".
Nella casella "Gruppi di utenti che hanno accesso alla visualizzazione" selezionare il gruppo "Anonimi" e nient'altro. Salvare e chiudere.

Rimanendo nel componente di gestione utenti, aprire le opzioni (tasto opzioni in altro a destra) e modificare il campo "Gruppo utenti per visitatori" dall'attuale valore "Public" a "Anonimi". Salvare e chiudere.

Fine della configurazione


Verifiche
Creare due moduli per eseguire i test.
  • Titolo: "Solo registrati", accesso "Registered"
  • Titolo: "Solo anonimi", accesso "Livello anonimo"
A questo punto prima di tornare a vedere cosa succede nel lato pubblico, e' importante ripulire i coockie del browser. In caso di dubbio, abbandonare la postazione ed effettuare le prove da un altro computer.
Una prima visualizzazione della pagina dovrebbe mostrare il modulo "Solo anonimi", mentre effettuando il login, questo modulo sparisce e al suo posto appare il modulo "Solo registrati".

Fine delle verifiche

Come funziona
L'organizzazione dei gruppi predefinita di Joomla non permette questo risultato, perche' tutti i gruppi sono discendenti del gruppo "Public", e quindi ne ereditano i permessi.
La creazione di una diramazione laterale da questa gerarchia, effettuata creando il gruppo "Anonimi", consente di definire successivamente un livello di accesso parallelo che abbiamo chiamato "Livello anonimo", di cui i "Registered" e gli "Special" non ereditano i permessi, e che consente quindi di abilitare dei contenuti ai soli utenti anonimi.
Perche' il tutto funzioni, e' stato pero' necessario specificare (nelle opzioni) che gli utenti non autenticati sono da considerarsi facenti parte del gruppo "Anonimi" e non "Public", in quanto i livelli "Registered" e "Special" discendono dal gruppo "Public" e ne ereditano i permessi, mentre non hanno relazione con il gruppo "Anonimi", e quindi non hanno possibilita' di accedere a contenuti a loro riservati.
« Ultima modifica: 16 Mar 2012, 12:20:20 da .:Fox:. »

Offline .:Fox:.

  • Appassionato
  • ***
  • Post: 330
  • Sesso: Maschio
    • Mostra profilo
Potrebbe essere una soluzione alternativa quella di sfruttare l'ACL.
Come non detto. E' esattamente la stessa cosa.

Offline elisamu

  • Esploratore
  • **
  • Post: 91
  • Sesso: Femmina
  • Ola!
    • Mostra profilo
Ok, grazie. Provo allora l'ACL. Utilissimo comunque il tuo post precedente perché il codice che hai scritto potrebbe essere utile anche per aree statiche del template.
"La mente è come un paracadute. Funziona solo se si apre."
Albert Einstein

Offline elisamu

  • Esploratore
  • **
  • Post: 91
  • Sesso: Femmina
  • Ola!
    • Mostra profilo
Grazie F0X e grazie xplosion, a buon rendere!!! :D
"La mente è come un paracadute. Funziona solo se si apre."
Albert Einstein

Offline kthefrog

  • Nuovo arrivato
  • *
  • Post: 30
    • Mostra profilo
Re:[RISOLTO] Modulo visibile solo a utente "public" e non a registrati
« Risposta #11 il: 20 Nov 2012, 22:00:40 »
GRAZIE!!!!
Finalmente ho capito qualcosa!

 



Web Design Bolzano Kreatif