Redefine the address to jump to after the user logs in
重新定义用户登录后跳转的地址
- 逻辑需求:用户登录之后,判断购物车是否有数据,有数据直接跳转到购物车页面,没有则显示原始的跳转效果。
- 参考方法:http://www.magepsycho.com/free-stuff/magento-extensions.html?p=2
- 解决办法:自定义模块,重写跳转方法。
在/app/etc/modules 下面增加Lollicupstore_Customer.xml
<?xml version="1.0" encoding="UTF-8" ?>
<config>
<modules>
<Lollicupstore_Customer>
<active>true</active>
<codePool>local</codePool>
</Lollicupstore_Customer>
</modules>
</config>
在/app/code/local 下面增加LollicupStrore 模块,模块里面包含如下:Customer/controllers 文件夹 、etc文件夹 。

在Customer/controller下面新建AccountController.php ,引入Mage/Customer/controllers/AccountController.php,重写_loginPostRedirect ()
<?php
require_once 'Mage/Customer/controllers/AccountController.php';
class Lollicupstore_Customer_AccountController extends Mage_Customer_AccountController
{
/**
* Define target URL and redirect customer after logging in
*/
protected function _loginPostRedirect()
{
$session = $this->_getSession();
if (!$session->getBeforeAuthUrl() || $session->getBeforeAuthUrl() == Mage::getBaseUrl()) {
// Set default URL to redirect customer to
$session->setBeforeAuthUrl($this->_getHelper('customer')->getAccountUrl());
// Redirect customer to the last page visited after logging in
if ($session->isLoggedIn()) {
if (!Mage::getStoreConfigFlag(
Mage_Customer_Helper_Data::XML_PATH_CUSTOMER_STARTUP_REDIRECT_TO_DASHBOARD
)) {
$referer = $this->getRequest()->getParam(Mage_Customer_Helper_Data::REFERER_QUERY_PARAM_NAME);
if ($referer) {
// Rebuild referer URL to handle the case when SID was changed
$referer = $this->_getModel('core/url')
->getRebuiltUrl( $this->_getHelper('core')->urlDecodeAndEscape($referer));
if ($this->_isUrlInternal($referer)) {
$session->setBeforeAuthUrl($referer);
}
}
} else if ($session->getAfterAuthUrl()) {
$session->setBeforeAuthUrl($session->getAfterAuthUrl(true));
}
} else {
$session->setBeforeAuthUrl( $this->_getHelper('customer')->getLoginUrl());
}
} else if ($session->getBeforeAuthUrl() == $this->_getHelper('customer')->getLogoutUrl()) {
$session->setBeforeAuthUrl( $this->_getHelper('customer')->getDashboardUrl());
} else {
if (!$session->getAfterAuthUrl()) {
$session->setAfterAuthUrl($session->getBeforeAuthUrl());
}
if ($session->isLoggedIn()) {
$session->setBeforeAuthUrl($session->getAfterAuthUrl(true));
}
}
$cart_qty = (int) Mage::getModel('checkout/cart')->getQuote()->getItemsQty();
//if condition of shopping cart is NOT empty, redirect customers to shopping cart page once successful logged in.
if($cart_qty >0 ){
$this->_redirectUrl('/checkout/cart/');
}else{
$this->_redirectUrl($session->getBeforeAuthUrl(true));
}
}
}