.active
サイト ナビゲーション バーには、ユーザーが現在表示しているページを特定し、そのメニュー項目にクラスを与えるロジックがあります。
私が思いついたコードは機能しますが、あまりエレガントではありません。これをより良くする方法を考えられますか?ロジックをビューからコントローラーに移動するにはどうすればよいですか? どうすれば同じことを繰り返すのをやめることができますか?
コントローラー:
<?php
class Pages extends CI_Controller {
public function view ($page = 'home') {
if (!file_exists('application/views/pages/'.$page.'.php'))
show_404();
$data['active'] = $page;
$this->load->view('templates/header', $data);
$this->load->view('pages/'.$page, $data);
$this->load->view('templates/footer', $data);
}
}
?>
景色:
<ul class="nav">
<li class="<?php echo($active=='home')?'active':''; ?>"><a href="./">blog</a></li>
<li class="<?php echo($active=='about')?'active':''; ?>"><a href="about">about</a></li>
<li class="<?php echo($active=='projects')?'active':''; ?>"><a href="projects">projects</a></li>
<li class="<?php echo($active=='lab')?'active':''; ?>"><a href="lab">lab</a></li>
<li class="<?php echo($active=='contact')?'active':''; ?>"><a href="contact">contact</a></li>
</ul>