最近在一个Joomla上架论坛,用着FireBoard。这个东西有个毛病,就是登录之后跳转到主页,而不是到论坛,看着很不行。
为了解决这个问题,回去看代码。FireBoard那个登录链接在template/default/plugin/profilebox/profilebox.php里面生成的,原来是这样:
为了解决这个问题,回去看代码。FireBoard那个登录链接在template/default/plugin/profilebox/profilebox.php里面生成的,原来是这样:
$loginlink = sefRelToAbs(‘index.php?option=com_login&Itemid=’ . $Itemid));
我想先把返回地址传过去。于是改成:
$loginlink = sefRelToAbs(‘index.php?option=com_login&Itemid=’ . $Itemid . “&return=” . sefRelToAbs(‘index.php?option=com_fireboard’));
接下来看看/joomla/components/com_login/login.html.php:
$return = $params->get(‘login’);
以及:
<form action=“<?php echo sefRelToAbs( ‘index.php?option=login’ ); ?>” method=“post” name=“login” id=“login”>
看来是转到index.php进行登录工作。再看看index.php:
// frontend login & logout controls
if ($option == ‘login’) {
$a = $return;
$mainframe->login();
$return = $a;
// JS Popup message
……
// checks for the presence of a return url
// and ensures that this url is not the registration or login pages
mosRedirect( $return );
} else {
mosRedirect( $mosConfig_live_site .‘/index.php’ );
}
看来原来就有跳转的代码。这样就好办了。
我原来尝试在那个login链接后面加&return=xxx,但是试了一个晚上,一点用都没有。
后来才发现,貌似是那个$return的变量在起作用。
最后,修改com_login/login.html.php:
把原来的$return=xxx改成:
$return_old = $params->get(‘login’);
终于,问题解决,FireBoard登录之后,又跳转回FireBoard了~
其实看原来那个$return=$param->get啥的,应该是有更好的办法的,但是这样也挺通用的,就行了吧……