Zunächst müssen Sie einige Änderungen an der Einstellung vornehmen.
Teilen Sie Kundenkonten zwischen mehreren Websites
Sie sollten diese Funktion hier konfigurieren : System -> Configuration -> Customer Configuration -> Share Customer Accounts
.
Stellen Sie diese Einstellung auf Global ein, um jeden Kunden für alle Websites freizugeben .
Teilen Sie die Anmeldung zwischen Websites
Um die Sitzung beim Wechseln zwischen Stores auf verschiedenen Websites beizubehalten, aktivieren Sie "SID im Frontend verwenden" unter System> Konfiguration> Allgemein> Web :
Benutzer zwingen, auf dieselbe Website umzuleiten, die sie registriert haben
Kunden müssen sich zwangsweise auf derselben Website anmelden, auf der sie sich registriert haben, als wir versucht haben, uns von einer anderen Website aus anzumelden .
Benutzen customer_login
Definieren Sie das Ereignis in config.xml
<?xml version="1.0"?>
<config>
<modules>
<Stackexchange_Magento165528>
<version>1.0.0</version>
</Stackexchange_Magento165528>
</modules>
<global>
<models>
<magento165528>
<class>Stackexchange_Magento165528_Model</class>
</magento165528>
</models>
<events>
<customer_login> <!-- identifier of the event we want to catch -->
<observers>
<customer_login_handler> <!-- identifier of the event handler -->
<type>singleton</type> <!-- class method call type; valid are model, object and singleton -->
<class>magento165528/observer</class> <!-- observers class alias -->
<method>redirectoSourceDomain</method> <!-- observer's method to be called -->
<args></args> <!-- additional arguments passed to observer -->
</customer_login_handler>
</observers>
</customer_login>
</events>
</global>
</config>
Beobachterklasse:
<?php
class Stackexchange_Magento165528_Model_Observer
{
public function redirectoSourceDomain(Varien_Event_Observer $observer)
{
$_customer = $observer->getEvent()->getCustomer();
/*
* Store of website from which website Customer have registered
*/
$_customer_resgister_store_id= $_customer->getStoreId();
if($_customer_resgister_store_id != Mage::app()->getStore()->getStoreId()){
$allStores=Mage::app()->getStores(); //get list of all stores,websites
foreach ($allStores as $_eachStoreId => $val){
$_storeId = Mage::app()->getStore($_eachStoreId)->getId();
//get url using store id
if($_customer_resgister_store_id == $_eachStoreId ){
$Websiteurl= Mage::app()->getStore($_storeId)->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
$_redirecUrl = $Websiteurl."customer/account/login?SID=".Mage::getModel("core/session")->getEncryptedSessionId();
/* Force redirect to repective Website */
Mage::app()->getFrontController()->getResponse()
->setRedirect($_redirecUrl)
->sendResponse();
exit;
}
}
}
return;
}
}
HINWEIS:
Ich habe diesen Code auf meinen MAGENTO DEMO STORE-Websites getestet.
Diese beiden Websites werden unter Verwendung des Website-Konzepts von derselben Magento-Instanz ausgeführt.