Какой самый быстрый и простой способ добавить «активный» класс к ссылке, чтобы ее можно было стилизовать? Я разрабатываю приложение в CI, и мне нужен быстрый и простой способ сделать это автоматически.
jQuery тоже вариант...
Какой самый быстрый и простой способ добавить «активный» класс к ссылке, чтобы ее можно было стилизовать? Я разрабатываю приложение в CI, и мне нужен быстрый и простой способ сделать это автоматически.
jQuery тоже вариант...
Вы действительно должны использовать класс URI CodeIgniter, чтобы сделать это вместо $_SERVER['REQUEST_URI']
$this->uri->uri_string()
if ( $this->uri->uri_string() == '/contact' )
^^ это предпочтительный способ сделать что-то из-за некоторых сложностей, которые могут возникнуть с функциями маршрутизации codeigniter.
Зависит от того, как вы выводите ссылку HTML.
Если вы используете модуль URL Helper, вы можете вызвать функцию anchor()
, чтобы создайте свои ссылки и передайте им массив атрибутов в качестве третьего параметра, то есть:
$this->load->helper('url');
echo anchor('url/path', 'Click here', array('class' => 'active'));
Если вы просто выводите HTML вручную в своих шаблонах/представлениях, очевидно, вы можете просто создать атрибут класса самостоятельно в HTML.
Если у вас много элементов навигации, вы можете сделать это так (очень упрощенно)...
<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>
Вы можете сделать это, создав помощник со следующими
<?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>
Чтобы добавить активный класс (class="active") к ссылке, я сделал это следующим образом:
In view
<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";
Может быть, это не ваше решение. но это работает для меня.