the_supermac Posted Friday at 02:19 PM Share Posted Friday at 02:19 PM Qualcosa mi sfugge: nella pagina di Login se clicco sulla registrazione di un nuovo cliente mi esce un bellissimo Error404! La pagina a cui punta il link è https://pixsys.shop/en/index.php?registration (in inglese) Però la registrazione del nuovo cliente invece funziona se fatta al momento del checkout di un ordine.... Ho configurato qualcosa in modo errato? Link to comment Share on other sites More sharing options...
wepresta Posted Friday at 02:33 PM Share Posted Friday at 02:33 PM Sì, è normale: il link che il tuo tema sta usando è sbagliato. Su PrestaShop, la pagina “Crea un account” non è index.php?registration. Di solito è: https://tuo-sito.com/en/login?create_account=1 oppure https://tuo-sito.com/en/authentication?create_account=1 (dipende da versione/tema) Perché funziona al checkout? Perché il checkout usa la route corretta interna, quindi la creazione account viene generata correttamente. Cosa devi fare: Vai nel file del tema che gestisce la pagina di login (spesso themes/tuo_tema/templates/customer/authentication.tpl oppure templates/customer/login.tpl Sostituisci il link “Create one here” in modo che punti a: {$urls.pages.authentication}?create_account=1 Poi svuota la cache (Parametri avanzati > Prestazioni > Svuota cache). Se mi dici la tua versione di PrestaShop e il nome del tema, ti indico il file esatto da modificare. Link to comment Share on other sites More sharing options...
the_supermac Posted Friday at 02:57 PM Author Share Posted Friday at 02:57 PM (edited) Grazie gentilissimo, la versione è l a8.1.4, il tema è il classico ma modificato con Creative Elements (ma la pagina di login non è stata alterata) .... Ho aperto authentication.tpl, ci trovo dentro questo: ... {block name='display_after_login_form'} {hook h='displayCustomerLoginFormAfter'} {/block} <div class="no-account"> <a href="{$urls.pages.register}" data-link-action="display-register-form"> {l s='No account? Create one here' d='Shop.Theme.Customeraccount'} </a> </div> ... Modificato in: {block name='display_after_login_form'} {hook h='displayCustomerLoginFormAfter'} {/block} <div class="no-account"> <a href="{$urls.pages.authentication}?create_account=1" data-link-action="display-register-form"> {l s='No account? Create one here' d='Shop.Theme.Customeraccount'} </a> </div> Ma dopo la pulizia della cache mi da lo stesso errore.... Il link ora viene così: https://pixsys.shop/en/login?create_account=1 . Ho provato anche l'altro che mi hai suggerito https://pixsys.shop/en/authentication?create_account=1 ma non funziona nessuno dei due, ovvero il primo rimanda qui https://pixsys.shop/en/index.php?controller=registration e restituisce 404, il secondo invece non crasha ma mi dice che non trova la pagina Edited Friday at 03:18 PM by the_supermac (see edit history) Link to comment Share on other sites More sharing options...
wepresta Posted Friday at 03:17 PM Share Posted Friday at 03:17 PM In PrestaShop 8.1.4 {$urls.pages.register} non viene dal tema: è una variabile Smarty generata dal core (router/Link) e passata ai template dal FrontController. Se a voi punta a index.php?registration, allora qualcosa sta alterando l’URL (override o modulo, più spesso). Test: In authentication.tpl aggiungete temporaneamente {debug} e guardate il valore di urls.pages.register. Provate anche a sostituire il link con: href="{$urls.pages.authentication}?create_account=1" Se così funziona, il problema è la generazione di register (override/modulo). Link to comment Share on other sites More sharing options...
wepresta Posted Friday at 03:26 PM Share Posted Friday at 03:26 PM (edited) 28 minutes ago, the_supermac said: Grazie gentilissimo, la versione è l a8.1.4, il tema è il classico ma modificato con Creative Elements (ma la pagina di login non è stata alterata) .... Ho aperto authentication.tpl, ci trovo dentro questo: ... {block name='display_after_login_form'} {hook h='displayCustomerLoginFormAfter'} {/block} <div class="no-account"> <a href="{$urls.pages.register}" data-link-action="display-register-form"> {l s='No account? Create one here' d='Shop.Theme.Customeraccount'} </a> </div> ... Modificato in: {block name='display_after_login_form'} {hook h='displayCustomerLoginFormAfter'} {/block} <div class="no-account"> <a href="{$urls.pages.authentication}?create_account=1" data-link-action="display-register-form"> {l s='No account? Create one here' d='Shop.Theme.Customeraccount'} </a> </div> Ma dopo la pulizia della cache mi da lo stesso errore.... Il link ora viene così: https://pixsys.shop/en/login?create_account=1 . Ho provato anche l'altro che mi hai suggerito https://pixsys.shop/en/authentication?create_account=1 ma non funziona nessuno dei due, ovvero il primo rimanda qui https://pixsys.shop/en/index.php?controller=registration e restituisce 404, il secondo invece non crasha ma mi dice che non trova la pagina Capito: il problema non è il link che avete messo, è lo script del tema che intercetta quel link perché avete lasciato: data-link-action="display-register-form" Nel tema Classic quel “data-link-action” viene gestito in JS e può forzare la navigazione verso controller=registration (che nel vostro caso punta a una route inesistente → 404). Fate così : In authentication.tpl togliete proprio data-link-action="display-register-form" Lasciate un link “normale” verso la pagina di login con create_account: <a href="{$urls.pages.authentication}?create_account=1"> {l s='No account? Create one here' d='Shop.Theme.Customeraccount'} </a> Note: {$urls.pages.authentication} in PS8 di solito è /login, quindi è corretto. /authentication come URL “pulita” spesso non esiste, quindi è normale che dia 404. Se dopo aver tolto data-link-action continua comunque a finire su controller=registration, allora è un override/modulo (molto probabilmente Creative Elements o un modulo SEO/URL) che sovrascrive prestashop.urls.pages.register. In quel caso, test rapido: disabilitate temporaneamente Creative Elements (ou moduli SEO/URL) e riprovate. Edited Friday at 03:26 PM by wepresta (see edit history) Link to comment Share on other sites More sharing options...
the_supermac Posted Friday at 03:40 PM Author Share Posted Friday at 03:40 PM Niente da fare, anche pulendo il tag a dalle scritture superflue e lasciando solo la proprietà href continua a puntare su https://pixsys.shop/en/index.php?controller=registration Ho disabilitato il creativeElements, ripulito la cache e nonostante tutto continua a puntare lì... Link to comment Share on other sites More sharing options...
wepresta Posted Friday at 03:49 PM Share Posted Friday at 03:49 PM Ok, quindi non è il template: c’è una riscrittura/routing che forza controller=registration (e quel controller non esiste → 404). Test (in ordine): Apri direttamente: https://pixsys.shop/en/login https://pixsys.shop/en/login?create_account=1 Se reindirizza uguale → è sicuramente il routing. BO → Traffico & SEO → SEO & URL Disattiva temporaneamente Friendly URL Salva e riprova. Se così funziona: problema di .htaccess / riscrittura. Sempre lì: clicca Salva per rigenerare il .htaccess. Se non cambia nulla: c’è un override/modulo che forza controller=registration → cerca controller=registration in /override e /modules. Link to comment Share on other sites More sharing options...
the_supermac Posted Friday at 03:51 PM Author Share Posted Friday at 03:51 PM (edited) Disabilitando creative elements e svuotando la cache non cambia di una virgola... Anche disabilitando i friendly url non cambia niente (non funziona proprio e rimanda alla home) Non ho altri moduli che facciano overrides ... ...😭 Edited Friday at 03:59 PM by the_supermac (see edit history) Link to comment Share on other sites More sharing options...
wepresta Posted yesterday at 08:17 AM Share Posted yesterday at 08:17 AM 1 minute ago, the_supermac said: Anche con il solo tag a continua a finire su https://pixsys.shop/en/index.php?controller=registration ma anche disabilitando creative elements e svuotando la cache non cambia di una virgola ...😭 Capito: se succede anche con un link “pulito” e dopo aver disattivato Creative Elements, allora non è il tema. È quasi sicuramente una riscrittura URL / override che forza controller=registration. Disattivate Friendly URL BO → Traffico & SEO → SEO & URL → mettete Friendly URL = NO, salvate e riprovate /en/login. Se così funziona → problema in .htaccess / rewrite. Rigenerate .htaccess Nella stessa pagina, cliccate Salva (anche senza cambiare nulla) per rigenerare il file .htaccess. Cercate chi forza controller=registration Nei file del server cercate la stringa: controller=registration dentro /override e /modules (a volte anche nel tema). Quasi sempre è un vecchio override/modulo SEO/login. Consiglio: provate anche in navigazione in incognito (per escludere cache del browser/CDN). Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now