使用IAM的Joomla登录模块。 登录和注销重定向到其在模件设置中设置的页面。
我的问题是状态,当用户试图用错误的用户凭据登录。 在这种情况下,用户将被重定向到组件/用户/?视图=登录页面。 在我而言,这个页面是不是在使用,也不是像设计网页的其余部分。 因此,我想将用户重定向,错误登录后,到前一页。
没有任何人有一个线索,如何解决呢?
谢谢
使用IAM的Joomla登录模块。 登录和注销重定向到其在模件设置中设置的页面。
我的问题是状态,当用户试图用错误的用户凭据登录。 在这种情况下,用户将被重定向到组件/用户/?视图=登录页面。 在我而言,这个页面是不是在使用,也不是像设计网页的其余部分。 因此,我想将用户重定向,错误登录后,到前一页。
没有任何人有一个线索,如何解决呢?
谢谢
您将需要修改用户控制器。 但是为了保持其“更新证据”不能修改核心代码,这就是为什么我们会做一个覆盖:
components/com_users/controllers/
和复制文件称为user.php
,你可以调用一个新的文件user2.php
user2.php
文件并重新命名控制器类UsersControllerUser2
templates/YOUR_TEMPLATE/html/mod_login
文件夹,复制modules/mod_login/tmpl/default.php
文件中有。 <input type="hidden" name="task" value="user.login" />
到<input type="hidden" name="task" value="user2.login" />
$ APP->重定向(JROUTE :: _( '的index.php选项= com_users&视图=登录?',假));
更改$app->redirect
路由到任何你想要的:)
要做到这一点,最好的办法是用一个模板,以替换mod_login模块。 此链接详细介绍了如何做到这一点的具体细节。
http://docs.joomla.org/Layout_Overrides_in_Joomla
基本上,你复制位于/modules/mod_login/tmpl/default_login.php文件/模板/ {} your_template中/ HTML / mod_login,这是的Joomla会用什么来渲染任何mod_login模块,只要你保留的文件名相同。
在行116,你会看到这行代码:
<input type="hidden" name="return" value="<?php echo $return; ?>" />
你现在有返回值应该是什么完全编程控制。 我通常通过在URL中的Base64编码返回PARAM,我又解析并插入作为返回隐藏输入在我的模块模板覆盖值
一个侧面说明,你永远不应该改变的核心文件,或将沿侧核心文件自定义文件,适用于各种原因,主要是任何后续的Joomla更新可以消灭你的变化打破你的网站。
在的Joomla为了留在同一页面错误登录后3.6.1,你必须改变在/components/com_users/controllers/user.php线
找:
if (true !== $app->login($credentials, $options))
{
// Login failed !
// Clear user name, password and secret key before sending the login form back to the user.
$data['remember'] = (int) $options['remember'];
$data['username'] = '';
$data['password'] = '';
$data['secretkey'] = '';
$app->setUserState('users.login.form.data', $data);
$app->redirect(JRoute::_('index.php?option=com_users&view=login', false));
和公正的评论的最后一行:
// $app->redirect(JRoute::_('index.php?option=com_users&view=login', false));
就这样。