мультимагазин, ручная активация учетной записи с prestashop

Я использую вариант с несколькими магазинами с prestashop. Хотелось бы перевести клиентов во втором магазине на ручную активацию после регистрации.

На самом деле я установил $customer->active = 0; в authentication.php.

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

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

Думаю получить shop_id но не знаю как развить свою идею.


person girl_dev    schedule 30.08.2016    source источник
comment
Что такое престашоп версия?   -  person JazZ    schedule 30.08.2016


Ответы (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;
}

Надеюсь, поможет.

ИЗМЕНИТЬ

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

ПОВТОРНО ИЗМЕНИТЬ

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

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

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

Но лучшим решением для вас будет создание переопределения. функции.

person JazZ    schedule 30.08.2016
comment
Спасибо за вашу помощь, я использую prestashop 1.6.1.2, но он не работает. Я знаю id_shop из базы данных, которую я добавил в controllers/front/AuthController.php if (Context::getContext()-›shop-›id == 3) { $customer-›active = 0; } else { $customer-›active = 1; } но после регистрации клиенты по-прежнему неактивны на обоих сайтах - person girl_dev; 31.08.2016
comment
Пожалуйста. Я повторно редактирую ответ. Файл для настройки: classes/Customer.php. Удачи. - person JazZ; 31.08.2016