2009-12-22 4 views
6

Какой самый быстрый и простой способ добавить «активный» класс к ссылке, чтобы его можно было создать? Я разрабатываю приложение в CI, и мне бы хотелось, чтобы это было легко сделать автоматически.Codeigniter - добавить «активный» класс css для ссылки, как?

JQuery вариант тоже ...

ответ

13

Вы должны быть действительно с помощью CodeIgniter URI класса, чтобы сделать это вместо $ _SERVER [ 'REQUEST_URI']

$ this-> uri-> uri_string()


if ($this->uri->uri_string() == '/contact') 

^^ это предпочтительный способ сделать что-то из-за некоторых сложностей, которые могут возникнуть с функциями маршрутизации codeigniter.

+0

Да, я использовал этот метод. –

+1

Мне пришлось использовать следующие для работы: if ($ this-> uri-> uri_string() == 'home') // Удалить косую черту – Sahil

6

В зависимости от того, как вы выводите вашу ссылку HTML.

Если вы используете URL Helper модуль, то вы можете вызвать функцию anchor() для создания ссылки, и передать ему массив атрибутов в качестве третьего параметра, а именно:

$this->load->helper('url'); 
echo anchor('url/path', 'Click here', array('class' => 'active')); 

Если вы просто выводя HTML вручную в ваши шаблоны/представления, очевидно, вы можете просто создать атрибут класса самостоятельно в HTML.

6

Если у вас есть много элементов навигации вы можете сделать это таким образом (очень упрощенный) ...

<ul> 
<li<?= if ($_SERVER['REQUEST_URI'] == '/contact'): ?> id="active"<?php endif; ?>><a href="">contact</a></li> 
</ul> 

Вы должны отредактировать его для ваших нужд ...

Если у вас нет того, что многие элементы навигации проще, чтобы дать каждой странице идентификатор тела, а затем использовать css, чтобы сделать его активным.

<style type="text/css"> 
body#contact #contact-nav { font-weight:bold; } 
</style> 

<body id="contact"> 

<ul id="navigation"> 
    <li id="contact-nav"><a href="">contact</a></li> 
</ul> 
+1

Это потрясающе. Первый вариант работал (с небольшой настройкой)! –

+0

Первый вариант также работает для меня также !!! Спасибо ... :) – enam

4

Вы можете сделать это, создав вспомогательный элемент с помощью следующих

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
if (! function_exists('active_link')) 
{ 
    function active_link($controller) 
    { 
     $CI =& get_instance(); 

     $class = $CI->router->fetch_class(); 
     return ($class == $controller) ? 'active' : ''; 
    } 
} 

затем применить ее в представлении меню

<li class="<?php echo active_link('services'); ?>"><a href="<?php echo base_url();?>services">Services</a></li> 
+0

Этот вопрос составляет 4 года, и ваш ответ не добавляется выгода для потока ... –

+1

это самый простой кодовый блок, с которым я столкнулся до сих пор ..Спасибо :) –

+0

@FahidMohammad да вот почему я ответил здесь, хотя этот вопрос очень старый. – Robin

1

Для добавления активного класса (класс =»активный») к ссылке, я сделал это, делая это:
Ввиду

<ul class="nav nav-tabs"> 
     <li id="button_home" class='<?php echo $home;?>'><?php echo anchor('pages/index','Home');?></li> 
     <li id="button_about" class='<?php echo $about;?>'><?php echo anchor('pages/about','About')?></li> 
</ul> 

В контроллере

$data['home']="active"; 

Возможно, это не ваше решение. но это работает для меня.

Смежные вопросы