Joomla.it Forum
Componenti per Joomla! => Gestione utenti e community => : Superbuc 19 Apr 2013, 09:28:35
-
Come da oggetto, sul mio sito non riesco a far rimanere l'utente, dopo il login, nella stessa pagina.
Per esempio va a vedere un documento che necessita di registrazione, per essere visto, gli viene chiesto il login e poi dopo viene rimandato in home page. Così si devo ricordare dov'era e ritornarci perdendo tempo...
Ho visto che c'è una pagina di rimando sulle impostazioni di CB, ma vale (o almeno c'è scritto) per il PRIMO login, mentre non ho trovato altro.
Mi potreste aiutare perfavore ?
Uso J 2.5 e cb 1.9
-
questo che ti allego è il modulo di login di community builder, quello che ti ho cerchiato lo hai utilizzato??
[allegato eliminato automaticamente dopo un anno]
-
No, in quella casella ho tutto vuoto. Anche quella del logout è vuota.
Se è vuota non dovrebbe muoversi dalla pagina, mi sbaglio ?
-
in teoria è come dici tu, prova a dargli l'url alla quale vuoi reindirizzare o far rimanere in questo caso giusto per tentare un prova!
-
Ragazzi io ho lo stesso problema, come possiamo risolvere?Se nel campo redirect dopo login inseriamo un URL quello vale per tutti i login in ogni posizione del sito, esempio mio concreto:
Ho il sito pubblico, le categorie della gallery invece sono solo per gli utenti registrati, se imposto l'URL della gallery come redirect dopo login nel modulo CB Login tutti gli utenti li rimanda alla gallery anche se loro non vogliono la gallery capito il problema?
E da qualche giorno che cerco la soluzione, e non riesco a farlo...sul forum di CB hanno scritto che basta inserire (#) nel campo redirect dopo login per tornare alla pagina precedente ma non funziona help!!!!
-
Nessuno ha trovato la soluzione?
-
qualcuno ha trovato una soluzione?
-
Io so che basta passare la url di ritorno via post o get... Puòi esaminare il codice del form o del controller del componente users per rendertene conto. Questo però vale per joomla, non so se cb lo condivide
-
Ciao giovi,
come passare la url di ritorno via post o get?
grazie ancora
-
Ricordavo male, si può passare solo via post quindi devi fare una override della view login del componente users e aggiungere il field "return" (eventualmetne con type="hidden") contenente la url di atterraggio codificata in base64. Qualcosa del genere:
<input type="hidden" name="return" value="<?php echo base64_encode('index.php?option=com_mycomponent&view=myview'); ?>"/>
Info: https://docs.joomla.org/How_do_you_redirect_users_after_a_successful_login%3F (https://docs.joomla.org/How_do_you_redirect_users_after_a_successful_login%3F)
Altre info e best practices: https://joomla.stackexchange.com/questions/16119/redirect-users-to-the-page-pointed-in-the-url-after-login (https://joomla.stackexchange.com/questions/16119/redirect-users-to-the-page-pointed-in-the-url-after-login)
-
Grazie Giovi
come fare l'ovveride della view login del componente users e aggiungere il field "return"?
Da quello che riesco a capire dai link, comunque alla fine si viene reindirizzati ad una pagina specifica oppure si resta nella stessa pagina?
Perdonami ma le cose si complicano per me :-[
Grazie ancora
-
come fare l'ovveride della view login del componente users e aggiungere il field "return"?
http://www.joomla.it/articoli-della-community/788-override-del-template-come-personalizzare-le-pagine-di-joomla.html
Da quello che riesco a capire dai link, comunque alla fine si viene reindirizzati ad una pagina specifica oppure si resta nella stessa pagina?
Si viene reindirizzati alla url che scrivi nel field return
-
quindi riesco alla fine ad essere indirizzati nella stessa pagina dove viene effettuato l'accesso?
in alternativa la funzionalità di essere indirizzati ad una url specifica già esiste senza fare override
Grazie ancora giovi
-
Basta che nell'override come valore di quel field ci metti:
$_SERVER['HTTP_REFERER']
Considera che però non è così affidabile come può sembrare. In più se vuoi fare una cosa fatta un pò meglio devi sempre controllare prima se quel campo è null, se params->get('return-url') è valorizzato, ecc.... <-- strada facile
La cosa più sicura è che sia proprio il componente che effettua il redirect alla pagina di login a passare una url di ritorno. In questo modo nella form di login cerchi se è stata passata in get una url di ritorno. <-- strada sicura
-
Grazie Giovi, certo mi piacerebbe prendere la strada piu sicura, ma le cose si complicano per realizzare quanto da te consigliato...
sai se esiste qualche videotutorial o spiegazione dei passaggi da effettuare.
Oppure , essendo l'argomento interessante penso anche per altri, qualcuno riesce a realizzare una guida?
Grazie ancora
-
Non credo sia così complicato da necessitare una guida e comunque è una soluzione normalmente inattualizzabile sia per l'inefficacia dell'http-referrer che per la non ottimizzazione dei componenti che ne farebbero uso. Ad ogni modo basta che nella override della pagina di login sostituisci:
<?php if ($this->params->get('login_redirect_url')) : ?>
<input type="hidden" name="return" value="<?php echo base64_encode($this->params->get('login_redirect_url', $this->form->getValue('return'))); ?>" />
<?php else : ?>
<input type="hidden" name="return" value="<?php echo base64_encode($this->params->get('login_redirect_menuitem', $this->form->getValue('return'))); ?>" />
<?php endif; ?>
con
<?php if ($this->params->get('login_redirect_url')) : ?>
<input type="hidden" name="return" value="<?php echo base64_encode($this->params->get('login_redirect_url', $this->form->getValue('return'))); ?>" />
<?php elseif($_SERVER['HTTP_REFERER']) : ?>
<input type="hidden" name="return" value="<?php echo base64_encode($_SERVER['HTTP_REFERER']); ?>" />
<?php else : ?>
<input type="hidden" name="return" value="<?php echo base64_encode($this->params->get('login_redirect_menuitem', $this->form->getValue('return'))); ?>" />
<?php endif; ?>
Così facendo comunque darai priorità sempre alla pagina di provenienza, se esiste
-
Ciao Giovi,
ho seguito la guida (http://www.joomla.it/articoli-della-community/788-override-del-template-come-personalizzare-le-pagine-di-joomla.html)e se capisco bene devo trovare il file all'interno NOME_TEMPLATE/html/NOME_ESTENSIONE/NOME_VISUALIZZAZIONE/NOME_FILE.php
nome estensione è mod_login?
nome file è default.php?
però all'interno del file non trovo il codice da te postato da sostituire.
Dove sbaglio?
Grazie ancora
-
io lavoravo su com_users/views/login
se lavori sul modulo è molto più semplice ottenere la url della pagina attuale per il ritorno