Czasami model biznesu i specyfika branży sklepu wymaga uprzedniego zatwierdzenia konta klienta przez administratora zanim ten pierwszy dokona zakupu. Poniżej tutorial jak poprzez parę modyfikacji uzyskać taką funkcjonalność na sklepie.
Zawartość artykułu
Nadpisanie kontrollera
Tworzymy plik:
override/classes/Customer.php
O treści:
<?php class Customer extends CustomerCore { public function add($autodate = true, $null_values = true) { $this->id_shop = ($this->id_shop) ? $this->id_shop : Context::getContext()->shop->id; $this->id_shop_group = ($this->id_shop_group) ? $this->id_shop_group : Context::getContext()->shop->id_shop_group; $this->id_lang = ($this->id_lang) ? $this->id_lang : Context::getContext()->language->id; $this->birthday = (empty($this->years) ? $this->birthday : (int)$this->years.'-'.(int)$this->months.'-'.(int)$this->days); $this->secure_key = md5(uniqid(rand(), true)); $this->last_passwd_gen = date('Y-m-d H:i:s', strtotime('-'.Configuration::get('PS_PASSWD_TIME_FRONT').'minutes')); if ($this->newsletter && !Validate::isDate($this->newsletter_date_add)) { $this->newsletter_date_add = date('Y-m-d H:i:s'); } if ($this->id_default_group == Configuration::get('PS_CUSTOMER_GROUP')) { if ($this->is_guest) { $this->id_default_group = (int)Configuration::get('PS_GUEST_GROUP'); } else { $this->id_default_group = (int)Configuration::get('PS_CUSTOMER_GROUP'); } } /* Can't create a guest customer, if this feature is disabled */ if ($this->is_guest && !Configuration::get('PS_GUEST_CHECKOUT_ENABLED')) { return false; } $this->active = false; $success = parent::add($autodate, $null_values); $this->updateGroup($this->groupBox); return $success; } }
Uwaga! Jest to klon funkcji z pliku:
classes/Customer.php
Z dodaną linijką:
$this->active = false;
Przed:
$success = parent::add($autodate, $null_values);
Jeśli Twój plik się różni od podanego przez nas – użyj Twojej wersji tej funkcji z dodaną tą 1 linijką.
Włączenie nadpisywania
Parametry zaawansowane -> Wydajność -> Wyłącz wszystkie nadpisywania -> NIE
Asekuracyjne usunięcie pliku cache z serwera:
cache/class_index.php
Dodatkowy e-mail do właściciela sklepu o rejestracji:
Otwieramy plik:
controllers/front/AuthController.php
W funkcji:
sendConfirmationMail()
Przed linijką:
return Mail::Send(
Wklejamy:
Mail::Send( $this->context->language->id, 'account', 'Rejestracja nowego użytkownika!', array( '{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{email}' => $customer->email, '{passwd}' => '(ukryte)'), (string)Configuration::get('PS_SHOP_EMAIL'), $customer->firstname.' '.$customer->lastname );
Aby było po bożemu ten plik też powinien być nadpisany poprzez overwrite, ale dla szybkości tego nie robiliśmy 🙂 Jeśli chcesz mieć pewność, że przy ewentualnych aktualizacjach jądra sklepu jego zawartość nie ulegnie zmianie – wykonaj to też w ten sposób jak się czujesz na siłach.
Adnotacja w mailu do klienta, że rejestracja musi być zatwierdzona przez administratora:
Otwieramy plik:
mails/pl/account.html
Po kodzie:
<span style="color:#333"><strong>Hasło:</strong></span> {passwd} </span>
Wklejamy informację typu:
<p><strong>Uwaga! Twoje konto będzie dostępne po zatwierdzeniu przez administratora!</strong></p>
Gotowe 😉
Super!
Dziękuję 🙂 Mogę prosić jeszcze o informację jak teraz ustawić żeby po aktywacji konta klient automatycznie dostał maila że już uzyskał dostęp?