1

我尝试使用谷歌搜索并使用 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>

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

4

2 回答 2

2

尝试通过以下方式修改您的模板 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 时,您可以创建自定义模块而不是直接注入模板。

于 2013-03-19T08:23:29.400 回答
2

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

亚当的回答更简洁,但有些人真的很犹豫要破解他们的模板(或者如果它是一个商业模板,找到合适的位置来放置代码可能真的很混乱)。

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

于 2013-03-20T01:55:01.550 回答