2013-05-06 6 views
5

私が知っているようにワードプレスis_home()ホームページを決定する機能を持っています。私はCIではこのYii check if homepageCodeGatewayのis_home()関数

ようなソリューションを使用
YII
、テンプレートは実際に、私はそれが必要で何度も直面しました。たとえば、タグ<body>にいくつかのCSSクラスを追加します。

すべて私が見つけたものhttp://ellislab.com/forums/viewthread/194637/#916899
誰でも私を助けたり、自分の解決策を書くことはできますか?あなたが必要な場合は、あまりにも方法を取得するには、現在のコントローラと$this->router->fetch_method()を取得するために$this->router->fetch_class()を使用することができ、事前

+3

まあ、私は "家" は何を意味するのか自分自身に定義することをお勧め。リクエストURIは '/'かその他のURIですか?そうであれば、要求URIが一致するかどうかを確認するのは非常に簡単です。 –

+0

犯罪はありませんが、Laravelはこのばかげたことをもっと簡単にします。これはおそらくPHPフレームワークの中で最も優れたルータメカニズムを持っています。 ;) – itachi

答えて

5

ありがとうございます。

あなたがにリンクされているのYii例に非常に似て、あなたは

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

のような何かができるか仮定(ページのURLがhttp://yoursite.com/であっても、この方法にすぎ

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

この方法を一致させますホームコントローラ+メソッドがデフォルトです)、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の

更新:
$this->router->fetch_class()$this->router->fetch_method()はCI v3では非推奨されました。代わりに$this->router->class$this->router->methodを使用してください。

17

私はここで私の答えを追加したかったのですが、他の方法は私の大幅に変更されたバージョンのCIではうまくいきません。

このスニペットは、私たちは、ホームページ上にあるかどうかを検出するために使用するものです

if (!$this->uri->segment(1)) { 
    // We are on the homepage 
} 
0
if($this->uri->uri_string() == ''){ 
echo"You are on homepage"; 
} 
0

カスタムヘルパーは1を作成していない場合は、そうでない場合は、カスタムヘルパーファイルの中に次のコードスニペットを貼り付けるだけで、Codeigniterの任意の場所からis_home()を使用できるようになります。

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

OR

function is_home() 
{ 
    $CI =& get_instance(); 
    return (strtolower($CI->router->fetch_class()) === $CI->router->default_controller && $CI->router->fetch_method() === 'index') ? true : false; 
} 
1

なぜだけではなく、単に

public function name_of_home_method() 
    { 
     $data['is_home'] = true; 
    }