छोटे कस्टम कोड के साथ मूल तर्क को लागू करना संभव है:
के लिए एक पर्यवेक्षक लिखें controller_predispatch_customer_account_loginPost
, जांचें कि क्या पोस्ट किया गया ईमेल पता ( username
) ईमेल पते की तरह नहीं दिखता है। इस मामले में ग्राहक संख्या के आधार पर ग्राहक को देखें और POST डेटा में उपयोगकर्ता नाम के स्थान पर ग्राहक के वास्तविक ईमेल पते को बदलें।
उदाहरण प्रेक्षक कोड:
$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());
}
}
फिर controller_postdispatch_customer_account_loginPost
, यदि यह सेट है, तो ईमेल पते को सत्र में वापस ग्राहक संख्या में बदलें। अन्यथा असफल लॉगिन पर त्रुटि संदेश में नंबर के बजाय ईमेल पता होगा।
उदाहरण प्रेक्षक कोड:
$emailAddress = Mage::getSingleton('customer/session')->getUsername();
if ($emailAddress) {
$customerNumber = Mage::getModel('customer/customer')->loadByEmail($emailAddress)
->getCustomerNumber();
}
Mage::getSingleton('customer/session')->setUsername($customerNumber);
अन्य बातों पर विचार:
- "पासवर्ड भूल गए" फ़ॉर्म पर समान तर्क लागू करें
- यदि आप
increment_id
ग्राहक संख्या के रूप में निर्मित का उपयोग करना चाहते हैं, तो तय करें कि आप ग्राहक कॉन्फ़िगरेशन के तहत सिस्टम कॉन्फ़िगरेशन में सक्षम कर सकते हैं > नया खाता विकल्प बनाएं> मानव-अनुकूल ग्राहक आईडी बनाएं