FireBoard的登录跳转

最近在一个Joomla上架论坛,用着FireBoard。这个东西有个毛病,就是登录之后跳转到主页,而不是到论坛,看着很不行。
为了解决这个问题,回去看代码。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
  • $return = strval( mosGetParam( $_POST, ‘return’));
  • $message = intval( mosGetParam( $_POST, ‘message’, 0 ) );
  • if ($option == ‘login’) {
  • $a = $return;
  • $mainframe->login();
  • $return = $a;
  • // JS Popup message
  • ……

  •  
  • if ( $return && !( strpos( $return, ‘com_registration’ ) || strpos( $return, ‘com_login’ ) ) ) {
  • // 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’);

  • $return = strval(mosGetParam($_REQUEST, ‘return’, $return_old));
  • 终于,问题解决,FireBoard登录之后,又跳转回FireBoard了~
    其实看原来那个$return=$param->get啥的,应该是有更好的办法的,但是这样也挺通用的,就行了吧……