Temel mantığı çok az özel kodla uygulamak mümkündür:
İçin bir gözlemci yaz controller_predispatch_customer_account_loginPost
, nakledilen e-posta adresi (kontrol username
) yok değil bir e-posta adresi gibi görünüyor. Bu durumda müşteriyi müşteri numarasına göre arayın ve POST verilerindeki kullanıcı adı alanını bulunan müşterinin gerçek e-posta adresiyle değiştirin.
Örnek gözlemci kodu:
$request = $observer->getControllerAction()->getRequest();
$username = $request->getPost('username');
if (false === strpos($username, '@')) {
$customer = Mage::getModel('customer/customer')
->getCollection()
->addAttributeToFilter('customer_number', $username)
->getFirstItem();
if ($customer && $customer->getEmail()) {
$request->setPost('username', $customer->getEmail());
}
}
Ardından controller_postdispatch_customer_account_loginPost
, oturumda e-posta adresini, ayarlanmışsa müşteri numarasına geri koyun. Aksi takdirde, başarısız oturum açmalardaki hata iletileri, numara yerine e-posta adresini içerir.
Örnek gözlemci kodu:
$emailAddress = Mage::getSingleton('customer/session')->getUsername();
if ($emailAddress) {
$customerNumber = Mage::getModel('customer/customer')->loadByEmail($emailAddress)
->getCustomerNumber();
}
Mage::getSingleton('customer/session')->setUsername($customerNumber);
Dikkate alınacak diğer şeyler:
- "Şifremi unuttum" formuna aynı mantığı uygulayın
- Müşteri yapılandırması> Yeni Hesap Seçenekleri Oluştur> İnsan Dostu Müşteri Kimliği Oluştur
increment_id
altında sistem yapılandırmasında etkinleştirebileceğiniz yerleşik müşteri numarası olarak kullanmak isteyip istemediğinize karar verin