2016-08-30 14 views
1

J'utilise l'option multi-magasin avec prestashop. Je voudrais passer les clients dans le deuxième magasin à l'activation manuelle après l'enregistrement.multi-store, compte d'activation manuelle avec prestashop

En fait, j'ai défini $customer->active = 0; dans authentication.php.

Tous les clients inscrits sur les deux sites sont inactifs après l'enregistrement.

Existe-t-il un moyen de définir $customer->active = 0; uniquement pour un site Web.

Je pense obtenir shop_id mais je ne sais pas comment développer mon idée.

+0

Qu'est-ce que la version prestashop? – JazZ

Répondre

1

Dans Prestashop 1.6 :

Vous pouvez obtenir le id_shop avec l'objet Context.

Donc, je pense que vous pouvez faire quelque chose comme ceci:

Si vous connaissez le id_shop (supposons que le id_shop = 1)

if (Context::getContext()->shop->id == 1) { 
    $customer->active = 0; 
} else { 
    $customer->active = 1; 
} 

Hope it helps.

EDIT

Mise à jour de réponse pour obtenir le id_shop du contexte parce que l'objet client ne gère jusqu'à ce qu'il soit ajouté non.

RE-EDIT

Dans la classe Customer (/classes/Customer.php) personnaliser la fonction add().

Ajoutez cette ligne autour de la ligne 212 (après la déclaration de « last_passwd_gen »):

$this->active = ($this->id_shop == 3) ? false : true; 

Mais la meilleure solution pour vous est de créer un override de la fonction.

+0

Merci pour votre aide, j'utilise prestashop 1.6.1.2 mais ça ne marche pas Je connais l'id_shop de la base de données J'ai ajouté dans controllers/front/AuthController.php if (Contexte :: getContext() -> shop- > id == 3) { $ client-> actif = 0; } else { $ client-> active = 1; } mais après l'enregistrement les clients sont toujours inactifs sur les deux site Web –

+0

De rien. Je réédite la réponse. Le fichier à personnaliser est 'classes/Customer.php'. Bonne chance. – JazZ

+0

Merci beaucoup, la dernière solution fonctionne bien :)) –