Press "Enter" to skip to content

Moderacja rejestracji użytkownika przez administratora sklepu – Presta Shop 1.6.x

Admin 2

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.

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 😉

  1. Krzysztof F. Krzysztof F.

    Dziękuję 🙂 Mogę prosić jeszcze o informację jak teraz ustawić żeby po aktywacji konta klient automatycznie dostał maila że już uzyskał dostęp?

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

Zobacz także !
Jak osadzić film YouTube przy pomocy zakładki TM Product Videos?