Jump to content

Problema campo Newsletter pagina iscrizione Cliente


gugu76

Recommended Posts

Buongirono a tutti, dunque ho un problema che non riesco a risolvere con la mia versione di prestashop in versione 1.5.6.1.

Dunque nella pagina di creazione account tradizionale, trovo due check box, una per l'iscrizione alla newsletter e una per ricevere offerte promozionali dai partner.

Al fine di essere in regola con la normativa sulla privacy, volevo spostare le due checkbox sotto l'informativa per la privacy. Ma a parte lo spostamento che non è il mio problema, ho un altro problema.

Cancellando o commentando il codice qui sotto (quello originale)

 

{if $newsletter}
        <p class="checkbox" >
            <input type="checkbox" name="newsletter" id="newsletter" value="1" {if isset($smarty.post.newsletter) AND $smarty.post.newsletter == 1} checked="checked"{/if} autocomplete="off"/>
            <label for="newsletter">{l s='Sign up for our newsletter!'}</label>
        </p>
        <p class="checkbox" >
            <input type="checkbox"name="optin" id="optin" value="1" {if isset($smarty.post.optin) AND $smarty.post.optin == 1} checked="checked"{/if} autocomplete="off"/>
            <label for="optin">{l s='Receive special offers from our partners!'}</label>

 

 

riesco a far sparire i box di richiesta e a spostarli, ma comunque chi si registra sul sito deve "obbligatoriamente" fleggare il campo newsletter altrimenti il processo di registrazione non va abuon fine e il sistema suggerisce di fleggare i campi.

Anche cancellando il codice, la pagina viene caricata senza box da fleggare tuttavia compare sempre questo errore in alto.

Ci sono 1 errori

  1. newsletter richiesti

Ho lavorato sul file tpl del tema ma non riesco a venirne a capo. I campi li vorrei lasciare ma non renderli obbligatori. Ho provato anche a disattivare ed eliminare il modulo newsletter ma non cambia nulla.

Non è un discorso del tema in quanto anche lavorando sul tema di defualt ho sempre questo problema.

Qualcuno ha un idea su dove devo mettere le mani?

grazie e saluti a tutti.

 

 

 

Link to comment
Share on other sites

Prova a dare un'occhiata all'IdentityController 

if (!isset($_POST['newsletter']))
   $this->customer->newsletter = 0;
elseif (!$origin_newsletter && isset($_POST['newsletter']))
   if ($module_newsletter = Module::getInstanceByName('blocknewsletter'))
     if ($module_newsletter->active)
       $module_newsletter->confirmSubscription($this->customer->email);
Link to comment
Share on other sites

Ciao,

ecco il file che c'e' nella root

 

class IdentityControllerCore extends FrontController
{
    public $auth = true;
    public $php_self = 'identity';
    public $authRedirection = 'identity';
    public $ssl = true;

    public function init()
    {
        parent::init();
        $this->customer = $this->context->customer;
    }

    /**
     * Start forms process
     * @see FrontController::postProcess()
     */
    public function postProcess()
    {
        $origin_newsletter = (bool)$this->customer->newsletter;

        if (isset($_POST['years']) && isset($_POST['months']) && isset($_POST['days']))
            $this->customer->birthday = (int)($_POST['years']).'-'.(int)($_POST['months']).'-'.(int)($_POST['days']);

        if (Tools::isSubmit('submitIdentity'))
        {
            if (!@checkdate(Tools::getValue('months'), Tools::getValue('days'), Tools::getValue('years')) &&
                !(Tools::getValue('months') == '' && Tools::getValue('days') == '' && Tools::getValue('years') == ''))
                $this->errors[] = Tools::displayError('Invalid date of birth.');
            else
            {
                $email = trim(Tools::getValue('email'));
                $this->customer->birthday = (empty($_POST['years']) ? '' : (int)$_POST['years'].'-'.(int)$_POST['months'].'-'.(int)$_POST['days']);
                if (isset($_POST['old_passwd']))
                    $_POST['old_passwd'] = trim($_POST['old_passwd']);
                
                if (!Validate::isEmail($email))
                    $this->errors[] = Tools::displayError('This email address is not valid');
                elseif ($this->customer->email != $email && Customer::customerExists($email, true))
                    $this->errors[] = Tools::displayError('An account using this email address has already been registered.');
                elseif ((!isset($_POST['old_passwd']) || empty($_POST['old_passwd'])) || (Tools::encrypt($_POST['old_passwd']) != $this->context->cookie->passwd))
                    $this->errors[] = Tools::displayError('The password you entered is incorrect.');
                elseif ($_POST['passwd'] != $_POST['confirmation'])
                    $this->errors[] = Tools::displayError('The password and confirmation do not match.');
                else
                {
                    $prev_id_default_group = $this->customer->id_default_group;

                    // Merge all errors of this file and of the Object Model
                    $this->errors = array_merge($this->errors, $this->customer->validateController());
                }

                if (!count($this->errors))
                {
                    $this->customer->id_default_group = (int)$prev_id_default_group;
                    $this->customer->firstname = Tools::ucwords($this->customer->firstname);

                    if (!isset($_POST['newsletter']))
                        $this->customer->newsletter = 0;
                    elseif (!$origin_newsletter && isset($_POST['newsletter']))
                        if ($module_newsletter = Module::getInstanceByName('blocknewsletter'))
                            if ($module_newsletter->active)
                                $module_newsletter->confirmSubscription($this->customer->email);

                    if (!isset($_POST['optin']))
                        $this->customer->optin = 0;
                    if (Tools::getValue('passwd'))
                        $this->context->cookie->passwd = $this->customer->passwd;
                    if ($this->customer->update())
                    {
                        $this->context->cookie->customer_lastname = $this->customer->lastname;
                        $this->context->cookie->customer_firstname = $this->customer->firstname;
                        $this->context->smarty->assign('confirmation', 1);
                    }
                    else
                        $this->errors[] = Tools::displayError('The information cannot be updated.');
                }
            }
        }
        else
            $_POST = array_map('stripslashes', $this->customer->getFields());

        return $this->customer;
    }
    /**
     * Assign template vars related to page content
     * @see FrontController::initContent()
     */
    public function initContent()
    {
        parent::initContent();

        if ($this->customer->birthday)
            $birthday = explode('-', $this->customer->birthday);
        else
            $birthday = array('-', '-', '-');

        /* Generate years, months and days */
        $this->context->smarty->assign(array(
                'years' => Tools::dateYears(),
                'sl_year' => $birthday[0],
                'months' => Tools::dateMonths(),
                'sl_month' => $birthday[1],
                'days' => Tools::dateDays(),
                'sl_day' => $birthday[2],
                'errors' => $this->errors,
                'genders' => Gender::getGenders(),
            ));

        $this->context->smarty->assign('newsletter', (int)Module::getInstanceByName('blocknewsletter')->active);

        $this->setTemplate(_PS_THEME_DIR_.'identity.tpl');
    }

    public function setMedia()
    {
        parent::setMedia();
        $this->addCSS(_THEME_CSS_DIR_.'identity.css');
    }

}

 

Edited by gugu76 (see edit history)
Link to comment
Share on other sites

Non sono un programmatore... mi arrangio.

Non pretendo di essere aiutato... io non ho mai avuto occasione di farlo.

Tuttavia ogni volta che cerco documentazione per cercare di risolvere i vari problemi, trovo decine di richieste simile alle mie che non hanno mai avuto risposta. Trovo decine di persone che hanno avuto la malagurata sorte di scegliere questa piattaforma "gratuita" per il loro business. Il bello e che documentadosi su prestashop uno dovrebbe poprio sceglierla per le migliaia se non milioni di persone che hanno scelto questo sistema di vendita.

E anni che seguo prestashop ma vedo che purtroppo le cose non sono cambiate, la comunità che c'era su oscommerce... ragazzi quello era un altro modo di essere community.

Tutto e gratis, nessuno è tenuto a fare niente e nessuno può pretendere niente, ma come esperienza personale posso manifestare il mio disgusto per come gira la baracca.

Per non parlare dell'"italianizzazione" di prestashop pari a quella di un sistema nato 2 settimane fa nonostante siano passati anni.

Link to comment
Share on other sites

 

...

Dunque nella pagina di creazione account tradizionale, trovo due check box, una per l'iscrizione alla newsletter e una per ricevere offerte promozionali dai partner.

Al fine di essere in regola con la normativa sulla privacy, volevo spostare le due checkbox sotto l'informativa per la privacy.

...

 

 

Ciao gugu76, scusa se posto anche qui ma l'argomento ch ehai sollevato è di interresse generale, per cui ti chiedo di spiegare il motivo per cui è necessario spoare i checkbox di iscrizione newsletter e optin e dove esattamente dovrebbero essere per la normativa italiana.

Scrivo questo perchè personalmente non sono a conoscienza di questa presunta indicazione nella normativa sulla privacy ma vorrei capire da te cosa c'è che non è in regola e a quale regola ti riferisci (ti chiedo cortesemente di citare la fonte).

 

Aggiungo che probabilmente l'errore è dovuto al fatto che il campo newsletter è stato impostato come obbligatorio in b.o.

Edited by eugenata (see edit history)
Link to comment
Share on other sites

  • 3 weeks later...

Ciao, a quanto ho capito il problema dovresti risolverlo nel BO cliccando su "clienti" e in fondo alla pagina sulla sinistra devi cliccare su "impostare campi obbbligatori per questa sessione" e successivamente togliere la spunta su newsletter e optin.spero di esserti stato di aiuto

Link to comment
Share on other sites

  • 4 years later...

Ho un problema simile, che fino ad oggi non mi ero posto.

Utilizzo la versione di Prestashop 1.6.1.12,
in Preferenze > Clienti, ho l'opzione (spunta) di attivare/Disabilitare la casella Iscrizione alla newsletter che Abilita opt-in .

La disattivazione funziona solo per "Abilita opt-in", cioèè le offerte dei partner, ma non per la registrazione classica alla newsletter, che durante il processo di creazione dell'account , rimane la casellina di spunta.

Come mai?

Come mai disabilitando da BO, non si toglie questa spunta ?

 

Spero qualcuno possa dare un cosiglio e soluzione.
Grazie a tutti

Link to comment
Share on other sites

Ciao,

disabilitando la newsletter non si elimina il checkbox perchè il controller (AuthController.php) che crea il form di registrazione verifica sia il valore (sì/no) impostato nel backoffice sia la presenza del modulo "newsletter" (e il fatto che questo modulo sia attivo). Se una delle due condizioni è vera, il checkbox viene mostrato. Prova a disabilitare il modulo newsletter, dovrebbe sparire il checkbox in registrazione.

Buon pomeriggio,
Federica

  • Thanks 1
Link to comment
Share on other sites

Grande, Grande, Grande Federica!!!

:wub::wub::wub::wub::wub::wub::wub::wub:

RISOLTO, disattivando il modulo newsletter e togliendo la spunta in corrispondenza di "Abilita la registrazione alla newsletter", si disattiva il campo.
In realtà alla fine lo sto tenendo in quanto lo sfrutto per altro. Chi aderisce partecipa all'estrazione di omaggi. :)

Grazie ancora Fede per la dritta....

***

PS: Fede, o chiunque altro membro della community, ho un problema con la Nota di Consegna, questo è il post pubblicato con i dettagli:
https://www.prestashop.com/forums/topic/824417-consiglio-per-generare-nota-di-consegna-con-importo-prima-della-fa/?tab=comments#comment-2869105

Grazie

Edited by GrandeLupo (see edit history)
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...