Joomla.it Forum
Joomla! 2.5 (versione con supporto terminato) => Joomla! 1.6/1.7/2.5 => : elisamu 14 Mar 2012, 23:20:18
-
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.
-
Ricordo che ne abbiamo discusso altre volte (http://forum.joomla.it/index.php/topic,157859.msg706169.html) 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.
-
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?
-
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
<jdoc:include type="modules" name="position-7" style="beezDivision" headerLevel="3" />
e ci aggiungi subito a seguire la nuova posizione:
<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
<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':
<!-- 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?
-
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.
-
Veramente ottima spiegazione Fox! Molto utile!
-
Potrebbe essere una soluzione alternativa quella di sfruttare l'ACL.
http://www.joomla.it/articoli-community-16-e-17-tab/5136-visualizzarenascondere-elementi-web-in-base-allaccesso.html
-
Ti ringrazio, ma ce n'e' una migliore.
Chiedo scusa, ma l'altra volta (http://forum.joomla.it/index.php/topic,157859.msg706169.html) 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.
-
Potrebbe essere una soluzione alternativa quella di sfruttare l'ACL.
Come non detto. E' esattamente la stessa cosa.
-
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.
-
Grazie F0X e grazie xplosion, a buon rendere!!! :D
-
GRAZIE!!!!
Finalmente ho capito qualcosa!