ก่อนอื่นคุณต้องทำการเปลี่ยนแปลงบางอย่างในการตั้งค่า
แบ่งปันบัญชีลูกค้าระหว่างหลายเว็บไซต์
System -> Configuration -> Customer Configuration -> Share Customer Accounts
คุณควรกำหนดค่าคุณลักษณะนี้ที่นี่:
ทำให้การตั้งค่านี้ไปทั่วโลกสำหรับการใช้งานร่วมกันของลูกค้าทุกเว็บไซต์ทั้งหมด
แบ่งปันการเข้าสู่ระบบระหว่างเว็บไซต์
เพื่อให้เซสชันเมื่อสลับระหว่างร้านค้าบนเว็บไซต์อื่นให้เปิดใช้งาน "ใช้ SID บนส่วนหน้า" ในระบบ> การกำหนดค่า> ทั่วไป> เว็บ :
บังคับให้ผู้ใช้เปลี่ยนเส้นทางไปยังเว็บไซต์เดียวกันที่ลงทะเบียนไว้
เข้าสู่ระบบลูกค้าอย่างแข็งขันไปยังเว็บไซต์เดียวกันที่พวกเขาได้ลงทะเบียนเมื่อเราพยายามที่จะเข้าสู่ระบบจากเว็บไซต์อื่น
ใช้ customer_login
กำหนดเหตุการณ์เพื่อ 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>
ชั้นสังเกตการณ์:
<?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;
}
}
บันทึก:
ฉันมีการทดสอบรหัสนี้ในเว็บไซต์เก็บตัวอย่างของ MAGENTO ของฉัน
เว็บไซต์สองแห่งนี้ใช้งานจากตัวอย่างวีโอไอพีเดียวกันโดยใช้แนวคิดเว็บไซต์