Как добавить класс "активный", проверив имя текущей функции
Я пытаюсь добавить класс css "активный" в элемент списка, проверяя, на какой функции работает пользователь. Я использую codeigniter для создания cms и использую имена классов и функции для навигации по сайту
class Main extends CI_Controller {
public function index(){
// Get all Articles
$data['title'] = 'Latest Articles';
$data['main_content'] = 'main';
$this->load->view('layouts/main', $data);
}
public function article($slug) {
// Get Article details
$data['article'] = $this->Games_model->get_game_details($slug);
$data['title'] = $data['article']->title;
$data['main_content'] = 'article';
$this->load->view('layouts/main', $data);
}
}
Я использую этот код для создания класса main, чтобы пользователи могли посещать мой сайт по этому URL "localhost/cms/main"
или "localhost/cms/"
я хочу добавить класс, проверив, на какой функции мы находимся
Например
, если мы находимся на "localhost/cms/"
, я хочу добавить класс в домашнюю ссылку
, иначе я хочу чтобы добавить класс в статью или какую функцию я когда-либо выполнял
Надеюсь, вы поняли, что я хочу здесь сказать
Итак, есть ли какая-нибудь помощь??
4 answers
Чтобы получить имя класса в Codeigniter
$this->router->fetch_class();
Чтобы получить имя метода в Codeigniter
$this->router->fetch_method();
Вы можете использовать сегмент uri и маршруты
В routes.php
$route['main'] = 'main/index';
$route['article'] = 'main/article';
В поле зрения
<a <?php echo ($this->uri->segment(1)=='main') ? 'class="active"':''; ?> href="<?php echo base_url('main'); ?>">Main</a>
<a <?php echo ($this->uri->segment(1)=='article') ? 'class="active"':''; ?> href="<?php echo base_url('article'); ?>">Articles</a>
Для получения более подробной информации ознакомьтесь с документацией, для маршрутов нажмите здесь и для сегмента uri нажмите здесь
Если я правильно понял, вы уже устанавливаете активную страницу в $data['main_content']
, вы должны иметь возможность выполнять следующие действия в своем представлении (ваши навигационные ссылки или где угодно):
<a <?php echo $main_content=='main'?' class="active"':''?> href="your_main_url">Main</a>
<a <?php echo $main_content=='article'?' class="active"':''?> href="your_articles_url">Articles</a>
Это в основном проверяет переменную $data['main_content']
, которую вы установили И передали для просмотра в вашем контроллере, и печатает class="active"
для активной страницы.
Как уже прокомментировал Хирнер, вы можете использовать массив $data
для добавления дополнительных данных, которые вы можете отправить в свой шаблон. В вашем случае вы также можете использовать свой элемент $data['main_content']
для указания текущей страницы.
Создайте свой шаблон таким образом, чтобы меню также было отдельным шаблоном, в противном случае вам нужно выполнить проверку текущей активной страницы на каждом шаблоне страницы.
Итак, чтобы привести вам пример:
// your navigation template file
<ul class="nav">
<li <?php echo ($main_content === 'main' ? 'class="active"' : '') ?>><a href="..">Main</a></li>
<li <?php echo ($main_content === 'article' ? 'class="active"' : '') ?>><a href="..">Acticles</a></li>
</ul>