Jump to content

[8.1.4] registrazione nuovi utenti


Recommended Posts

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?

 

Senza-titolo-1.jpg

Link to comment
Share on other sites

SÏ, è normale: il link che il tuo tema sta usando è sbagliato.

Su PrestaShop, la pagina “Crea un account” non è index.php?registration.
Di solito è:

PerchĂŠ funziona al checkout?
PerchĂŠ il checkout usa la route corretta interna, quindi la creazione account viene generata correttamente.

Cosa devi fare:

  1. Vai nel file del tema che gestisce la pagina di login (spesso themes/tuo_tema/templates/customer/authentication.tpl oppure templates/customer/login.tpl
  2. Sostituisci il link “Create one here” in modo che punti a:
    1. {$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

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 by the_supermac (see edit history)
Link to comment
Share on other sites

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:

  1. In authentication.tpl aggiungete temporaneamente {debug} e guardate il valore di urls.pages.register.
  2. 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

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 by wepresta (see edit history)
Link to comment
Share on other sites

Ok, quindi non è il template: c’è una riscrittura/routing che forza controller=registration (e quel controller non esiste → 404).

Test (in ordine):

  1. Apri direttamente:
    1. https://pixsys.shop/en/login
    2. https://pixsys.shop/en/login?create_account=1
    3. Se reindirizza uguale → è sicuramente il routing.
  2. BO → Traffico & SEO → SEO & URL
    1. Disattiva temporaneamente Friendly URL
    2. Salva e riprova.
    3. Se cosĂŹ funziona: problema di .htaccess / riscrittura.
  3. 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

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.

 

  1. Disattivate Friendly URL
    1. BO → Traffico & SEO → SEO & URL → mettete Friendly URL = NO, salvate e riprovate /en/login. Se così funziona → problema in .htaccess / rewrite.
  2. Rigenerate .htaccess
    1. Nella stessa pagina, cliccate Salva (anche senza cambiare nulla) per rigenerare il file .htaccess.
  3. Cercate chi forza controller=registration
    1. 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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...