2017-02-04 5 views
0

私はcodeigniterアプリケーションでブートストラップテンプレートを使用しています。ここでは、私は別のファイルにあるメニューを持っています。すべてのページで同じファイル(つまりメニュー)を呼び出します。そして、メニュー項目にclass="active"を置くと、メニューがどこにあるのかをユーザーが知ることができるように強調表示されます。ですから、私の質問は、どのようにclassをメニュー項目に動的に設定するのですか?codeigniterでhtmlのクラスを動的に割り当てる最良の方法は何ですか?

一般的な方法の1つは、メニュー項目の名前を格納する変数を渡して、単にこのようにチェックすることです。<li <?php if($var=='menuItem'){echo ' class="active"';} ?>></li> しかし、これよりも動的なメソッドがあるかどうかはまだ調べています。前もって感謝します。

+1

を。あなたのコードを単純化することはできますが、 '

  • >
  • ' – skribe

    +0

    実際、エコーはそのように働きません。残念です。代わりに印刷を使用することができます。 – skribe

    答えて

    1

    メニューの仕組みやサイト構造についての情報は十分ありませんが、URLセグメントを分析してメニュー項目がアクティブかどうかを判断することがよくあります。例えば:

    あなたのURLはこれですと仮定します。

    http://www.mydomain.co.uk/index.php/news/page_1 
    

    そして、あなたのメインメニューのようなものです:私はこのようなURLセグメントをチェックして=「アクティブ」クラスを追加します

    <li><a href="#">Home</a></li> 
    <li><a href="#">News</a></li> 
    <li><a href="#">About</a></li> 
    

    <?php echo ($this->uri->segment(1) == 'news') ? 'active':''; ?> 
    

    を取得するには
    <li><a href="#" class="<?php echo ($this->uri->segment(1) == 'home') ? 'active':''; ?>">Home</a></li> 
    <li><a href="#" class="<?php echo ($this->uri->segment(1) == 'news') ? 'active':''; ?>">News</a></li> 
    <li><a href="#" class="<?php echo ($this->uri->segment(1) == 'about') ? 'active':''; ?>">About</a></li> 
    

    また、サブメニューのセグメント2などを見ることができます。セグメント1がヌルであることのチェックを追加することで、処理できる空白のホームページが表示されることがあります。

    また、最初のセグメントを変数に設定することもできますが、それは少しでもきれいにすることができます。

    <?php $page = $this->uri->segment(1); ?> 
    <li><a href="#" class="<?php echo ($page == 'home') ? 'active':''; ?>">Home</a></li> 
    <li><a href="#" class="<?php echo ($page == 'news') ? 'active':''; ?>">News</a></li> 
    <li><a href="#" class="<?php echo ($page == 'about') ? 'active':''; ?>">About</a></li> 
    

    あなたはここにURLセグメントについて読むことができます役立ちますhttps://www.codeigniter.com/user_guide/libraries/uri.html

    希望、私はそれを行うだろうかある

    +0

    これは私が言及したものよりも簡単で効率的です。そのアイデアをありがとう。 –

    関連する問題