2

我正在使用 magento 创建一个电子商务网站。目前,如果有新用户注册,则 url 将重定向到我的帐户页面。一旦新用户注册我的网站,我想显示主页。

指导我这样做。

提前致谢

4

7 回答 7

4

虽然这是一篇旧帖子,但我觉得敦促在这里提供一个新答案,因为许多其他答案公然不遵循 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);
        }
    }

}
于 2016-03-09T15:55:53.547 回答
2

打开Account Controller并添加代码$successUrl = Mage::getBaseUrl(); 在行前返回 $successUrl; 在函数_welcomeCustomer()

于 2012-05-09T12:28:52.687 回答
2

登录、注销和注册后的重定向是 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

于 2014-11-29T11:56:25.507 回答
0

首先检查登录后重定向用户的后端是否是您需要的。转到系统 > 配置 > 在客户端选项卡下 - 客户端配置 > 登录选项 > 选择否

默认功能是将用户重定向到他在登录前访问的最后/当前页面。在我看来,如果您让客户完成产品交易并让他采取行动并登录,这应该很有用。

于 2012-05-06T15:11:32.520 回答
0

在客户帐户控制器中使用以下代码

查找函数 _successProcessRegistration 和

代替$url = $this->_welcomeCustomer($customer); // line 350

$url = Mage::getBaseUrl();

于 2017-04-05T12:42:54.857 回答
-1

您可以覆盖 AccountController 以将客户重定向到您想要的页面。

如果您需要一个效果很好的现成解决方案,那么您可以尝试以下扩展: http:
//www.magepsycho.com/custom-login-redirect-pro.html

于 2012-05-06T12:53:55.130 回答
-1

转到您的客户 AccountController:

aap->core->code->Mage->customer->controllers->AccountController.php

然后搜索_welcomeCustomer()功能

替换此代码:

$successUrl = $this->_getUrl('*/*/index', array('_secure' => true));

和 :$successUrl = Mage::getBaseUrl();

$successUrl将使用户在注册后返回主页。

于 2014-08-07T11:42:42.457 回答