6

据我所知,Wordpress具有is_home()确定主页的功能。
YII我使用这样的解决方案Yii 检查主页

CI中,模板实际上,我多次面临它的必要性。例如,在 tag 中添加一些 css 类<body>

我发现的所有内容http://ellislab.com/forums/viewthread/194637/#916899
任何人都可以帮助我或编写自己的解决方案吗?

预先感谢

4

6 回答 6

21

我只是想在这里添加我的答案,因为另一种方法不适用于我经过大量修改的 CI 版本。

这个片段是我用来检测我们是否在主页上的

if (!$this->uri->segment(1)) {
    // We are on the homepage
}
于 2014-05-14T09:15:35.330 回答
5

如果需要,您可以使用$this->router->fetch_class()获取当前控制器并$this->router->fetch_method()获取方法。

与您链接到的 Yii 示例非常相似,您可以执行类似的操作

$is_home = $this->router->fetch_class() === 'name_of_home_controller' ? true : false;

或者也匹配方法

$is_home = ($this->router->fetch_class() === 'name_of_home_controller' && $this->router->fetch_method() === 'name_of_home_method') ? true : false;

这样即使页面 url 是http://yoursite.com/(假设 home controller+method 是默认的),http://yoursite.com/home_controller/http://yoursite.com/something/that /routes/to/home/controller/等,只要它调用该控制器,它就会将 $is_home 设置为 true。

编辑:($this->router->fetch_class() === $this->router->default_controller)如果您不想明确声明家庭控制器并将其设置为默认控制器,也可以使用。

CI v3 更新:在 CI v3
$this->router->fetch_class()$this->router->fetch_method()已弃用。使用$this->router->classand$this->router->method代替。

于 2013-05-06T17:02:32.007 回答
1
if($this->uri->uri_string() == ''){ 
echo"You are on homepage"; 
}
于 2014-11-11T08:54:54.197 回答
1

如果您没有自定义助手,请创建一个;否则在您的任何自定义帮助程序文件中只需粘贴以下任何代码片段,您应该能够is_home()从 Codeigniter 中的任何位置使用。

function is_home()
{
   $CI =& get_instance();
   return (!$CI->uri->segment(1))? TRUE: FALSE;
}

或者

function is_home()
{
  $CI =& get_instance();
  return (strtolower($CI->router->fetch_class()) === $CI->router->default_controller  && $CI->router->fetch_method() === 'index') ? true : false;
}
于 2016-09-15T04:19:44.453 回答
0

为什么不简单

public function name_of_home_method()
    {
        $data['is_home'] = true;
    }
于 2017-08-29T17:35:14.180 回答
0

为了获得更好的答案,您应该涵盖 2 条主页路线:

我假设在routes.php中有这样的默认控制器:

$route['default_controller'] = 'home';
  • 您的主页没有默认控制器名称(例如:yoursite.com)
  • 带有控制器名称的主页(例如:yoursite.com/home)

    if(!$this->uri->segment(1) || $this->uri->segment(1)=='home'){ 
        // YOU ARE ON THE HOME
    }
    
于 2019-11-03T08:16:02.430 回答