根据用户组重定向到着陆页或主页索引


Redirecting to landing page or home page index based on User Group

我试着用谷歌搜索和使用forums.joomla.org,因为我想确保我没有在这里浪费人们的时间,但不幸的是我没有运气。这是我的问题:

对于我的网站,我有两个登陆页,只有链接注册免费成为会员,并适当的索引页,用户访问后,他们成为注册。我把登陆页面设置为加拿大。因为我想让人们在第一次进入这个页面的时候就登陆到这里。我真正的索引页位于kanadax.ca/index.php。然而,现在当用户已经登录并点击网站徽标进入根域时,他们会得到一个页面未找到错误。

所以我要做的是:-如果是未注册的访客用户,将徽标重定向到位于kanadax.ca/的登陆页面。-一旦用户注册,任何时候他们去kanadax.ca/index.php应该重定向到example.com/index.php.

基本上我正在寻找基于用户组的条件重定向。什么好主意吗?

现在显然我更喜欢example.com/url作为主要索引页,而不是不太吸引人的example.com/index.php,但这是我修复重定向后的第二步。我相信这可以用。htaccess来完成,但是有了更复杂的登陆页——我为客人和注册用户设计的索引页结构,我认为这可能有点困难。但是,如果您在这方面有任何意见,请务必给予反馈。

我应该说我对php不是很熟悉,但我很乐意尝试任何建议,如果你愿意给我一步一步。毕竟,我做这个网站的第一个目标是学习!

多谢!

如果有必要,我很乐意提供一个测试帐户,这样你就可以自己玩这个网站了。

* *编辑:

嘿@Adam,我真的很感谢你的建议和一步一步的努力,这正是我所需要的。现在,我已经将第一部分放在index.php的开头,但是对于后一部分,我不太确定应该放在哪里。当我在index.php中搜索任何与logo相关的内容时,会出现两个单独的部分:

// Logo file or site title param
if ($this->params->get('logoFile'))
{
  $logo = '<img src="'. JURI::root() . $this->params->get('logoFile') .'" alt="'. $sitename .'" />';
}
elseif ($this->params->get('sitetitle'))
{
  $logo = '<span class="site-title" title="'. $sitename .'">'. htmlspecialchars($this->params->get('sitetitle')) .'</span>';
}
else
{
  $logo = '<span class="site-title" title="'. $sitename .'">'. $sitename .'</span>';
}

<div class="header">
        <div class="header-inner clearfix">
          <a class="brand pull-left" href="http://www.kanadax.ca/index.php/anasayfa">
            <?php echo $logo;?> <?php if ($this->params->get('sitedescription')) { echo '<div class="site-description">'. htmlspecialchars($this->params->get('sitedescription')) .'</div>'; } ?>
          </a>
          <div class="header-search pull-right">
            <jdoc:include type="modules" name="position-0" style="none" />
          </div>
        </div>
      </div>

第二部分在标题下。你觉得这两个是对的吗?如果是这样,我应该删除里面的内容,用你的建议代替,还是保留?

尝试按以下方式修改模板index.php文件:

  1. 将此添加到代码开头的某个地方

    $user = JFactory::getUser();
    if(JFactory::getUser()->id)
    {
        //link to page for registered users 
        $link =  JRoute::_('index.php?option=com_content&view=article&id=3');
    }else{
        //link to page for default users 
        $link =  JRoute::_('index.php?option=com_content&view=article&id=1');   
    }
    
  2. 在应该显示标志的地方

    <a href="<?php echo $link; ?>">
        <img src="images/path_to_image_name"/>
    </a>
    

就是这样!当你更熟悉Joomla和PHP时,你可以创建一个自定义模块,而不是直接注入模板。

如果你不想破解任何东西,你也可以尝试在调试或其他位置的自定义html模块中粘贴一些重定向代码,但使用高级模块管理器仅为来宾加载它或仅为登录用户加载它。你可以用AMM做各种各样的技巧来加载或不加载基于无数参数的东西。

Adam的回答更简洁,但是有些人真的不愿意修改他们的模板(或者如果它是一个商业模板,那么找到合适的位置放入代码可能真的很麻烦)。

你可以在这里阅读更多关于AMM的信息:http://www.nonumber.nl