根据用户组重定向到登录页面或主页索引

时间:2013-03-19 02:12:07

标签: php javascript html joomla

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

对于我的网站,我有一个登陆页面,它只有免费注册成为会员的链接,以及用户注册后访问的正确索引页面。我将登录页面设置为kanadax.ca/,因为我希望人们在第一次访问页面时登陆。我的真实索引页面位于kanadax.ca/index.php。但是,现在当用户已经登录并且他们点击网站徽标转到根域时,他们会看到找不到页面的错误。

所以我想做的是: - 如果是未注册的访客用户,请将徽标重定向到位于kanadax.ca/的目标网页。 - 用户注册后,无论何时进入kanadax.ca/index.php,都应重定向到example.com/index.php。

基本上我正在寻找基于用户组的条件重定向。有什么想法吗?

现在显然我实际上更喜欢将example.com/ url作为主索引页而不是不太吸引人的example.com/index.php,但这是我修复重定向后的第二步。我相信它可以用.htaccess完成,但是对于更复杂的登陆页面 - 我对访客和注册用户的索引页面结构我觉得它可能有点困难。但是,如果您在此领域也有任何反馈,请提供反馈。

我应该提到我对php不太满意但是如果你想一步一步给我,我很乐意尝试任何建议。毕竟,我制作这个网站的第一个目标是学习!

感谢一堆!

PS如果有必要,我很乐意提供一个测试帐户,以便您可以自己玩网站。

**编辑:

嘿@Adam,我非常感谢输入和一步一步,这正是我所需要的。现在,我把第一部分放在index.php的开头,但是对于后一部分,我不太清楚在哪里放它。当我搜索index.php中相关的任何徽标时,会出现两个单独的部分:

// 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>

第二部分在标题之下。你认为其中任何一个都是正确的部分吗?如果是这样,我应该删除那里的内容并替换你的建议,还是保留它?

2 个答案:

答案 0 :(得分:1)

尝试按以下方式修改模板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>
    
  3. 就是这样! 当您更熟悉Joomla和PHP时,您可以创建自定义模块,而不是直接注入模板。

答案 1 :(得分:1)

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

亚当的答案更清晰,但是有些人真的对于破解他们的模板犹豫不决(或者如果它是一个商业模板,那么找到合适的代码可能会非常麻烦。)

您可以在此处阅读有关AMM的更多信息: http://www.nonumber.nl