Na wielostronnej stronie Magento chciałbym zmusić użytkowników do zalogowania się na tej samej stronie, którą zarejestrowali. Mogą używać dowolnego formularza logowania na dowolnej stronie internetowej, ale formularz powinien sprawdzić swoje dane uwierzytelniające i przekierować je na odpowiednią stronę internetową.
Próbowałem sprawdzić stronę internetową klienta i zmusić go do zalogowania się. Jednak nie działa całkiem dobrze. Użytkownik zostaje zalogowany do bieżącej witryny, a nie tej, którą zarejestrował.
W aplikacji / code / local / mage / Customer / Session.php
public function login($username, $password)
{
/**************************************************/
$customer = Mage::getModel("customer/customer");
$customer_website = null;
foreach (Mage::app()->getWebsites() as $website) {
$customer->setWebsiteId($website->getId());
$customer->loadByEmail($username);
//check if user exists
if($customer->getName()){
$customer_website = $website->getId();
}
}
/*************************************************/
$customer = Mage::getModel('customer/customer')->setWebsiteId($customer_website);
if ($customer->authenticate($username, $password)) {
$this->setCustomerAsLoggedIn($customer);
return true;
}
return false;
}
Jakieś pomysły?
magento-1.9
multistore
login
session
zekia
źródło
źródło
Odpowiedzi:
Najpierw musisz wprowadzić zmiany w ustawieniach.
Udostępniaj konta klientów między wieloma witrynami
Należy skonfigurować tę funkcję tutaj:
System -> Configuration -> Customer Configuration -> Share Customer Accounts
.Ustaw to ustawienie na Globalne, aby udostępniać każdego klienta wszystkim stronom internetowym .
Udostępnij logowanie między stronami internetowymi
Aby zachować sesję podczas przełączania między sklepami w różnych witrynach internetowych , włącz „Użyj SID w interfejsie użytkownika” w System> Konfiguracja> Ogólne> Internet :
Zmuś użytkowników do przekierowania na tę samą stronę internetową, którą zarejestrowali
Zdecydowanie klient loguje się do tej samej witryny, którą zarejestrował, gdy próbowaliśmy zalogować się z innej strony.
Posługiwać się
customer_login
Zdefiniuj zdarzenie w pliku config.xml
Klasa obserwatora:
UWAGA:
TESTUJĘ TEN KOD na STRONACH MOJEJ MAGENTO DEMO.
Ta strona internetowa działa z tej samej instancji Magento przy użyciu koncepcji strony internetowej.
źródło
możesz przepisać poniższą metodę dla swoich wymagań
przepisz poniżej klasy
Mage_Customer_Model_Session
setCustomerAsLoggedIn
metodaźródło
Użyj
customer_login
zdarzenia, aby uniknąć zmiany / przepisania / zastąpienia plików podstawowych.W pliku config.xml
Twoja klasa obserwatorów (
/app/code/local/YourCompany/YourModule/Model/Observer.php
):Pamiętaj, że będziesz musiał przypisać różne grupy klientów do klientów o różnych widokach sklepu.
Możesz także przypisać atrybut klienta i ustawić go podczas rejestracji za pomocą ukrytego pola w formularzu rejestracyjnym zamiast przypisywania grup klientów.
źródło