6

私が知っているように、Wordpressにはis_home()ホームページを決定する機能があります。YIIでは
、このようなソリューションを使用しますYiiはホームページかどうかを確認します

CIでは、実際にテンプレートの必要性に何度も直面しました。たとえば、いくつかの css クラスを tag に追加し<body>ます。

私が見つけたすべてhttp://ellislab.com/forums/viewthread/194637/#916899
誰かが私を助けたり、独自のソリューションを書いたりできますか?

少し早いですがお礼を

4

6 に答える 6

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/ (ホーム コントローラーとメソッドがデフォルトであると仮定)、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

カスタム ヘルパーがない場合は作成します。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 に答える