Как добавить класс "активный", проверив имя текущей функции


Я пытаюсь добавить класс 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/", я хочу добавить класс в домашнюю ссылку , иначе я хочу чтобы добавить класс в статью или какую функцию я когда-либо выполнял

Надеюсь, вы поняли, что я хочу здесь сказать

Итак, есть ли какая-нибудь помощь??

Author: Happy Coding, 2015-08-27

4 answers

Чтобы получить имя класса в Codeigniter

$this->router->fetch_class();

Чтобы получить имя метода в Codeigniter

$this->router->fetch_method();
 1
Author: Saravana Dev, 2015-08-27 12:09:27

Вы можете использовать сегмент 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 нажмите здесь

 3
Author: parth, 2015-08-27 11:59:48

Если я правильно понял, вы уже устанавливаете активную страницу в $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" для активной страницы.

 1
Author: semihcosu, 2015-08-27 08:40:13

Как уже прокомментировал Хирнер, вы можете использовать массив $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>
 1
Author: Sven van Zoelen, 2015-08-27 08:40:29