我遇到问题,如果他们在购物车中有1件产品,我会在注册后将我的客户重定向到结帐页面。但是在重定向之后,结帐页面中的结算地址没有填充数据而用户没有登录。
这是我的重定向功能:
$item = Mage::helper('checkout/cart')->getSummaryCount();
if($item >0)
{
Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('checkout/onepage'));
Mage::app()->getResponse()->sendResponse();
exit;
}
原始代码:
public function customerLogin(Varien_Event_Observer $observer)
{
if (Mage::helper('customerredirect')->isEnabled() && !Mage::getSingleton("core/session")->getRedirectregister()){
$lasturl = Mage::getSingleton('core/session')->getLastUrl();
if (strpos(Mage::helper('core/http')->getHttpReferer(), 'checkout') === false){
if (! preg_match("#customer/account/create#", $lasturl) && Mage::helper('customerredirect')->isoptionEnabled('login_customerredirect')) {
if(Mage::getSingleton('core/session')->getIsFromCart() == 1 || Mage::getSingleton('core/session')->getIsFromCheckout() == 1){
Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('onestepcheckout/index'));
Mage::app()->getResponse()->sendResponse();
exit;
}
else
{
Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('customer/account'));
Mage::app()->getResponse()->sendResponse();
exit;
}
}
}
}
Mage::getSingleton("core/session")->setRedirectregister(false);
Mage::getSingleton('core/session')->setIsFromCart('0');
Mage::getSingleton('core/session')->setIsFromCheckout('0');
}
/*method for SignUp Customerredirect*/
public function customerRegistration(Varien_Event_Observer $observer)
{
Mage::getSingleton("core/session")->setRedirectregister(true);
if (Mage::helper('customerredirect')->isEnabled() && Mage::helper('customerredirect')->isoptionEnabled('registration_customerredirect') ) {
$_session = $this->_getSession();
$_session->setBeforeAuthUrl(Mage::helper('customerredirect')->setRedirectOnSignup());
}
}
更新代码:
/app/code/community/Amit/Custommodule/etc/config.xml
<?xml version="1.0" ?>
<config>
<modules>
<Amit_Custommodule>
<version>1.0.0</version>
</Amit_Custommodule>
</modules>
<global>
<models>
<custommodule>
<class>Amit_Custommodule_Model</class>
</custommodule>
</models>
</global>
<frontend>
<events>
<customer_register_success>
<observers>
<notify_user>
<class>custommodule/observer</class>
<method>myredirection</method>
</notify_user>
</observers>
</customer_register_success>
</events>
</frontend>
</config>
/app/code/community/Amit/Custommodule/Model/Observer.php
<?php
class Amit_Custommodule_Model_Observer {
public function myredirection(Varien_Event_Observer $observer) {
$AccountController = $observer->getEvent()->getAccountController();
$Customer = $observer->getEvent()->getCustomer();
$response1 = Mage::app()->getResponse(); // observers have event args
$url = 'http://magento.edreamag.com/';
$response1->setRedirect($url);
Mage::app()->getFrontController()->sendResponse();
return;
}
}
/app/etc/modules/Amit_Custommodule.xml
<?xml version="1.0"?>
<config>
<modules>
<Amit_Custommodule>
<codePool>community</codePool>
<active>true</active>
</Amit_Custommodule>
</modules>
</config>
/app/design/frontend/ultimo/default/template/page/html/header.phtml
<?php
$currentUrl = Mage::getUrl('*/*/*', array('_current' => true));
if (strpos($currentUrl,'checkout/cart') == true || strpos($currentUrl,'onestepcheckout/index') == true) {
$myValue ='yes';
Mage::getSingleton('core/session')->setCurrpage($myValue);
} else {
if (strpos($currentUrl,'customer/account/create') == true || strpos($currentUrl,'customer/account/create') == true) {
}else {
$myValue ='no';
Mage::getSingleton('core/session')->setCurrpage($myValue);
}}
?>
答案 0 :(得分:2)
我更喜欢这个解决方案
<强>步骤1:强>
创建config.xml
为app/code/community/Amit/Custommodule/etc/
- 请参阅:http://www.amitbera.com/create-an-magento-extension-with-custom-database-table/#sthash.JSktrUD0.dpuf
它代码
<?xml version="1.0" ?>
<config>
<modules>
<Amit_Custommodule>
<version>1.0.0</version>
</Amit_Custommodule>
</modules>
<global>
<models>
<custommodule>
<class>Amit_Custommodule_Model</class>
</custommodule>
</models>
</global>
<frontend>
<events>
<customer_register_success>
<observers>
<notify_user>
<class>custommodule/observer</class>
<method>myredirection</method>
</notify_user>
</observers>
</customer_register_success>
</events>
</frontend>
</config>
<强>步骤2:强>
在app / etc / modules /
创建模块控制文件模块名称为Amit_Custommodule.xml它的代码是
<?xml version="1.0"?>
<config>
<modules>
<Amit_Custommodule>
<codePool>community</codePool>
<active>true</active>
</Amit_Custommodule>
</modules>
</config>
<强>步骤3:强>
在Amit&gt; Custommodule&gt; Model
创建observer.php代码是
<?php
class Amit_Custommodule_Model_Observer {
public function myredirection(Varien_Event_Observer $observer) {
$AccountController = $observer->getEvent()->getAccountController();
$Customer = $observer->getEvent()->getCustomer();
$response1 = Mage::app()->getResponse(); // observers have event args
$url = 'http://www.example.com/';
$response1->setRedirect($url);
Mage::app()->getFrontController()->sendResponse();
return;
}
}
这是逻辑
将此代码添加到购物车页面phtml或控制器
中$myValue ='yes'; Mage::getSingleton(‘core/session’)->setIsCart($myValue);
class Amit_Custommodule_Model_Observer {
public function myredirection(Varien_Event_Observer $observer) {
$AccountController = $observer->getEvent()->getAccountController();
$Customer = $observer->getEvent()->getCustomer();
$response1 = Mage::app()->getResponse(); // observers have event args
$getSession =Mage::getSingleton('core/session')->getIsCart();
if($getSession=='yes')
{
$url='you checkout ur';
}else { $url='account url'; }
$response1->setRedirect($url);
Mage::app()->getFrontController()->sendResponse();
return;
}
}
在header.phtml中添加此代码,其余逻辑解释
$currentUrl = Mage::getUrl('*/*/*', array('_current' => true));
if (strpos($currentUrl,'checkout/cart') == true || strpos($currentUrl,'checkout/onepage') == true) {
$myValue ='yes';
Mage::getSingleton('core/session')->setCurrpage($myValue);
} else {
if (strpos($currentUrl,'customer/account/create') == true || strpos($currentUrl,'customer/account/create') == true) {
}else {
$myValue ='no';
Mage::getSingleton('core/session')->setCurrpage($myValue);
}}
仅更新此代码
class Amit_Custommodule_Model_Observer {
public function myredirection(Varien_Event_Observer $observer) {
$AccountController = $observer->getEvent()->getAccountController();
$Customer = $observer->getEvent()->getCustomer();
$response1 = Mage::app()->getResponse(); // observers have event args
if(Mage::getSingleton('core/session')->getCurrpage()=='yes')
{
$url=Mage::getUrl('checkout/onepage');
} else {
$url=Mage::getUrl('customer/account');
}
$response1->setRedirect($url);
Mage::app()->getFrontController()->sendResponse();
return;
}
}