2

我试图在 magento 中编辑新的客户帐户确认模板。但它没有反映在前端。

我已经customer_account_confirmation在主题布局文件夹中编辑了 customer.xml 文件中的布局。

customer_account_confirmation在 customer.xml中编辑过

<customer_account_confirmation>
        <remove name="right"/>
        <remove name="left"/>

        <reference name="root">
            <action method="setTemplate"><template>page/account_confirm.phtml</template></action>
            <action method="setHeaderTitle" translate="title" module="customer"><title>Send confirmation link</title></action>
        </reference>
    </customer_account_confirmation>

当我尝试单击邮件中的确认链接时,它会重定向到仪表板页面并显示确认消息。但我需要在客户点击邮件中的确认链接后显示感谢页面

我想在模板文件夹中的 account_confirm.phtml 文件中设置感谢页面。但这不起作用。

可以建议我解决这个问题的正确解决方案吗?

谢谢

4

1 回答 1

2

如果我猜对了,您的问题是:如何更改在客户单击新帐户的确认链接时调用的重定向 URL?

在这种情况下,检查负责默认重定向的控制器(即到“仪表板”)。您可以通过检查确认链接中给出的 URL 轻松找到它,类似于http://www.yourdomain.com/customer/account/confirm/[some params]. 从这里你得到控制器:你正在寻找confirmAction()方法,它在AccountController.php客户模块中。在这个方法的最后定义了一个重定向:

public function confirmAction()  {
    (...)

            // log in and send greeting email, then die happy
            $this->_getSession()->setCustomerAsLoggedIn($customer);
            $successUrl = $this->_welcomeCustomer($customer, true);
            $this->_redirectSuccess($backUrl ? $backUrl : $successUrl);
            return;

    (...)
}

因此,在成功确认后,用户将被重定向到 中给出的 URL $backUrl,或者,如果没有给出,则重定向到 中给出的 URL $successUrl

如果确认链接 URL 包含参数,则$backUrl在此方法中定义第一个变量:confirmAction()back_url

$backUrl = $this->getRequest()->getParam('back_url', false);

第二个变量$succesUrl由 的_welcomeCustomer()方法返回AccountController,它设置一个指向 的 URL indexAction(),加载客户的仪表板。

因此,为了更改默认的 Magento 重定向,您可以确保使用back_url参数创建确认链接(在我的情况下,例如,此参数为空);或者您在自定义模块中覆盖AccountController并根据需要进行重定向。

于 2013-05-22T22:15:46.570 回答