2016-08-30 19 views
1

Я использую опцию multi-store с prestashop. Я бы хотел, чтобы клиенты во втором магазине начали ручную активацию после регистрации.много магазин, ручная учетная запись активации с prestashop

Фактически я установил $customer->active = 0; в authentication.php.

все зарегистрированные пользователи на обоих сайтах неактивны после регистрации.

Есть ли способ установить $customer->active = 0; только для одного веб-сайта.

Я думаю, чтобы получить shop_id, но я не знаю, как развивать свою идею.

+0

Что такое версия prestashop? – JazZ

ответ

1

В Prestashop 1.6:

Вы можете получить id_shop с Context объекта.

Так что, я думаю, что вы можете сделать что-то вроде этого:

Если вы знаете id_shop (предположат, id_shop = 1)

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

Надеется, что это помогает.

EDIT

Обновленный ответ получить id_shop из контекста, так как объект клиента не обрабатывает его, пока он не добавил.

RE-EDIT

В Customer класса (/classes/Customer.php) настроить функцию add().

Добавить эту линию вокруг линии 212 (после «last_passwd_gen» декларации):

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

Но самое лучшее решение для Вас, чтобы создать override функции.

+0

Спасибо за вашу помощь, я использую prestashop 1.6.1.2, но он не работает Я знаю id_shop из базы данных Я добавил в контроллеры/front/AuthController.php if (Context :: getContext() -> shop- > id == 3) { $ customer-> active = 0; } else { $ customer-> active = 1; } , но после регистрации клиенты по-прежнему неактивны на обоих сайтах –

+0

Добро пожаловать. Я повторно отредактирую ответ. Файл для настройки - 'classes/Customer.php'. Удачи. – JazZ

+0

Большое спасибо, последнее решение прекрасно работает :)) –