我正在使用 magento 创建一个电子商务网站。目前,如果有新用户注册,则 url 将重定向到我的帐户页面。一旦新用户注册我的网站,我想显示主页。
指导我这样做。
提前致谢
虽然这是一篇旧帖子,但我觉得敦促在这里提供一个新答案,因为许多其他答案公然不遵循 Magento 最佳实践(例如:直接修改核心文件)或(当它有效时)他们不必要地重写客户帐户控制器。
下面的解决方案完全通过使用观察者类来执行。以这种方式这样做将确保您的逻辑不会因升级 Magento 而丢失(如果您直接修改了核心类文件),Magento 的核心开发团队也应该选择调整Mage_Customer_AccountController::createPostAction
在您升级站点时将引入这些更改的方法(这不会让你重写控制器类文件)。
在以下步骤中,根据需要创建任何目录以创建提到的文件。
第 1 步:定义您的模块
应用程序/etc/modules/Stackoverflow_Question10470629.xml
<?xml version="1.0"?>
<config>
<modules>
<Stackoverflow_Question10470629>
<codePool>local</codePool>
<active>true</active>
</Stackoverflow_Question10470629>
</modules>
</config>
第 2 步:定义模块配置
应用程序/代码/本地/Stackoverflow/Question10470629/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<Stackoverflow_Question10470629>
<version>1.0.0</version>
</Stackoverflow_Question10470629>
</modules>
<global>
<models>
<stackoverflow_question10470629>
<class>Stackoverflow_Question10470629_Model</class>
</stackoverflow_question10470629>
</models>
</global>
<frontend>
<events>
<controller_action_postdispatch_customer_account_createPost>
<observers>
<stackoverflow_question10470629>
<type>singleton</type>
<class>stackoverflow_question10470629/observer_frontend</class>
<method>controllerActionPostdispatchCreatePostAction</method>
</stackoverflow_question10470629>
</observers>
</controller_action_postdispatch_customer_account_createPost>
<customer_register_success>
<observers>
<stackoverflow_question10470629>
<type>singleton</type>
<class>stackoverflow_question10470629/observer_frontend</class>
<method>customerRegisterSuccess</method>
</stackoverflow_question10470629>
</observers>
</customer_register_success>
</events>
</frontend>
</config>
第三步:定义你的观察者类
应用程序/代码/本地/Stackoverflow/Question10470629/Model/Observer/Frontend.php
<?php
/**
* All publicly accessible method names correspond to the event they observe.
*
* @category Stackoverflow
* @package Stackoverflow_Question10470629
*/
class Stackoverflow_Question10470629_Model_Observer_Frontend
{
/**
* @param Varien_Event_Observer $observer
*/
public function customerRegisterSuccess($observer)
{
/* @var $session Mage_Customer_Model_Session */
$session = Mage::getSingleton('customer/session');
// This event occurs within Mage_Customer_AccountController::createPostAction
// however it occurs before the controller sets it's own redirect settings.
// Therefore we set this flag to true now, and then within the postdispatch
// we'll redirect to our custom URL
$session->setData('customer_register_success', true);
}
/**
* @param Varien_Event_Observer $observer
*/
public function controllerActionPostdispatchCreatePostAction($observer)
{
/* @var $controller Mage_Customer_AccountController */
/* @var $session Mage_Customer_Model_Session */
$session = Mage::getSingleton('customer/session');
// We must test for a successful customer registration because they
// could have failed registration despite reaching postdispatch
// (for example: they used an existing email address)
if ($session->getData('customer_register_success')) {
$session->unsetData('customer_register_success');
$url = Mage::getBaseUrl();
$controller = $observer->getData('controller_action');
$controller->getResponse()->setRedirect($url);
}
}
}
打开Account Controller并添加代码$successUrl = Mage::getBaseUrl(); 在行前返回 $successUrl; 在函数_welcomeCustomer()
登录、注销和注册后的重定向是 magento 中非常常见的问题。请找到下面的代码,它可以帮助你。
public function customerRegistration(Varien_Event_Observer $observer)
{
$_session = Mage::getSingleton('customer/session');
$_session->setBeforeAuthUrl(CustomUrl);
}
Customurl 是您要在注册后重定向的 url。
如果您想要在登录、注销和注册后为您的电子商务网站自定义 URL 重定向的完整解决方案。自定义重定向扩展可以帮助你。单击链接以获取扩展名。http://www.magentocommerce.com/magento-connect/custom-redirection.html
首先检查登录后重定向用户的后端是否是您需要的。转到系统 > 配置 > 在客户端选项卡下 - 客户端配置 > 登录选项 > 选择否
默认功能是将用户重定向到他在登录前访问的最后/当前页面。在我看来,如果您让客户完成产品交易并让他采取行动并登录,这应该很有用。
在客户帐户控制器中使用以下代码
查找函数 _successProcessRegistration 和
代替$url = $this->_welcomeCustomer($customer); // line 350
和$url = Mage::getBaseUrl();
您可以覆盖 AccountController 以将客户重定向到您想要的页面。
如果您需要一个效果很好的现成解决方案,那么您可以尝试以下扩展: http:
//www.magepsycho.com/custom-login-redirect-pro.html
转到您的客户 AccountController:
aap->core->code->Mage->customer->controllers->AccountController.php
然后搜索_welcomeCustomer()
功能
替换此代码:
$successUrl = $this->_getUrl('*/*/index', array('_secure' => true));
和 :$successUrl = Mage::getBaseUrl();
这$successUrl
将使用户在注册后返回主页。