0 / 0 / 0
Регистрация: 07.01.2014
Сообщений: 27
1

Как сделать подсветку для активного пункта меню?

07.01.2014, 17:00. Показов 2435. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
есть несколько функций-получение массива и вывод полученного с помощью рекурсивной функции..вот код функций:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//Функция получения массива каталога
function get_cat() {
    //запрос к базе данных
    $sql = "SELECT * FROM menu";
    $result = mysql_query($sql);
    if(!$result) {
        return NULL;
    }
    $arr_cat = array();
    if(mysql_num_rows($result) != 0) {
        
        //В цикле формируем массив
        for($i = 0; $i < mysql_num_rows($result);$i++) {
            $row = mysql_fetch_array($result,MYSQL_ASSOC);
            
            //Формируем массив где ключами являются айдишники на родительские категории
            if(empty($arr_cat[$row['parent_id']])) {
                $arr_cat[$row['parent_id']] = array();
            }   
            $arr_cat[$row['parent_id']][] = $row;   
        }
        //возвращаем массив
        return $arr_cat;
    }
}
 
//вывод каталогa с помощью рекурсии     
function view_cat($arr,$parent_id = main) {
 
    //Условия выхода из рекурсии
    if(empty($arr[$parent_id])) {
        return;
    }
        
    echo '<ul>';
    //перебираем в цикле массив и выводим на экран
    for($i = 0; $i < count($arr[$parent_id]);$i++) {
        echo '<li><a href="?category_id='.$arr[$parent_id][$i]['title_url'].
                    '&parent_id='.$parent_id.'";>'
                    .$arr[$parent_id][$i]['title'].'</a>';
        //рекурсия - проверяем нет ли дочерних категорий
        view_cat($arr,$arr[$parent_id][$i]['title_url']);
        echo '</li>';
    }
    echo '</ul>';
    
}
вывод происходит в файле site.php, примерно так-
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//получаем массив каталога
$result = get_cat();
 
 
//Выводим каталог на экран с помощью рекурсивной функции
echo '<div id="header">';
echo '<img class="logo" src="images/logo.png">';
echo '<img class="yab" src="images/yab1.png">';
echo '<div id="menu">';
    $menu = view_cat($result);
echo '</div>';
echo '</div>';
 
if(empty($_GET['category_id'])){
    $parent_id = 'home';
    }
else{
    $parent_id = $_GET['category_id'];
}
?>
</div>
<div id="content">
    <?include($_SERVER['DOCUMENT_ROOT'].'/views/pages/'.$parent_id.'.php');?>
</div>
так получаю древовидное меню с неограниченным уровнем вложенности...
знающие люди подскажите как сделать подсветку другим цветом активного пункта....голову ломаю уже не первый день...я недавно занимаюсь программированием на php...понимаю что нужно просто задать условие if...
и вывести класс css для подсветки,но реализовать не получается...заранее благодарен за ответ)))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.01.2014, 17:00
Ответы с готовыми решениями:

Как прописать стиль для активного пункта меню?
Ув. юзеры, подскажите, какой командой прописать стиль для активного пункта меню?

Сделать подсветку активного меню
Добрый день! У меня выводится меню в цикле на каждую страницу ПУ(админки) и я хочу что бы когда я...

Рамка для активного пункта меню
&lt;li class =&quot;lis1&quot;&gt;&lt;a href=&quot;#home&quot;&gt;Home&lt;/a&gt;&lt;/li&gt; &lt;li class =&quot;lis1&quot;&gt;&lt;a...

Проверка текущего url до знака для активного пункта меню
Нужна проверка на текущий url, чтобы пункт активным оставался. Написал скрипт, но есть проблема,...

9
296 / 284 / 84
Регистрация: 10.05.2013
Сообщений: 920
07.01.2014, 17:02 2
Вот здесь:
PHP
1
2
3
4
5
6
7
8
for($i = 0; $i < count($arr[$parent_id]);$i++) {
        echo '<li><a href="?category_id='.$arr[$parent_id][$i]['title_url'].
                    '&parent_id='.$parent_id.'";>'
                    .$arr[$parent_id][$i]['title'].'</a>';
        //рекурсия - проверяем нет ли дочерних категорий
        view_cat($arr,$arr[$parent_id][$i]['title_url']);
        echo '</li>';
    }
Проверяйте, если совпадают адреса, присваивайте другой СSS
1
0 / 0 / 0
Регистрация: 07.01.2014
Сообщений: 27
07.01.2014, 17:56  [ТС] 3
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//вывод каталогa с помощью рекурсии     
function view_cat($arr,$parent_id = main) {
 
    //Условия выхода из рекурсии
    if(empty($arr[$parent_id])) {
        return;
    }
        
    echo '<ul>';
    //перебираем в цикле массив и выводим на экран
    for($i = 0; $i < count($arr[$parent_id]);$i++) {
        echo '<li><a href="?category_id='.$arr[$parent_id][$i]['title_url'].
                    '&parent_id='.$parent_id.'";>'
                    .$arr[$parent_id][$i]['title'].'</a>';
        //рекурсия - проверяем нет ли дочерних категорий
        view_cat($arr,$arr[$parent_id][$i]['title_url']);
        if($parent_id == $arr[$parent_id][$i]['title']) echo "class='menu-active'";
        echo '</li>';
    }
    echo '</ul>';
    
}
прописал css для .menu-active:
CSS
1
2
3
.menu-active {
    color: #ffffff!important;
}
не получается ,подскажите что не так новичку....заранее спасибо...
0
296 / 284 / 84
Регистрация: 10.05.2013
Сообщений: 920
07.01.2014, 18:00 4
PHP
1
2
3
echo '<li><a href="?category_id='.$arr[$parent_id][$i]['title_url'].
                    '&parent_id='.$parent_id.'";>'
                    .$arr[$parent_id][$i]['title'].'</a>';
Вот ваше <li><a></a></li>. А потом вы уже пичатаете: class='menu-active'.
Вам же надо "class='menu-active'" записать в <a>... Посмотрите в исходный код...
0
0 / 0 / 0
Регистрация: 07.01.2014
Сообщений: 27
07.01.2014, 18:21  [ТС] 5
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//вывод каталогa с помощью рекурсии     
function view_cat($arr,$parent_id = main) {
 
    //Условия выхода из рекурсии
    if(empty($arr[$parent_id])) {
        return;
    }
        
    echo '<ul>';
    //перебираем в цикле массив и выводим на экран
    for($i = 0; $i < count($arr[$parent_id]);$i++) {
        echo '<li><a href="?category_id='.$arr[$parent_id][$i]['title_url'].
                    '&parent_id='.$parent_id.'";'if($parent_id == $arr[$parent_id][$i]['title']) echo "class='menu-active'";'';>'
                    .$arr[$parent_id][$i]['title'].'</a>';
        //рекурсия - проверяем нет ли дочерних категорий
        view_cat($arr,$arr[$parent_id][$i]['title_url']);
        echo '</li>';
    }
    echo '</ul>';
    
}
так выдаёт ошибку синтаксиса...

Добавлено через 4 минуты
подскажите что не так?

Добавлено через 1 минуту
Parse error: syntax error, unexpected T_IF, expecting ',' or ';' in Z:\home\sait1.loc\www\functions\functions.php on line 61
вот ошибка

Добавлено через 4 минуты
мучаюсь 2 дня уже)
0
296 / 284 / 84
Регистрация: 10.05.2013
Сообщений: 920
07.01.2014, 18:42 6
Что это за запись такая?
PHP
1
2
3
echo '<li><a href="?category_id='.$arr[$parent_id][$i]['title_url'].
                    '&parent_id='.$parent_id.'";'if($parent_id == $arr[$parent_id][$i]['title']) echo "class='menu-active'";'';>'
                    .$arr[$parent_id][$i]['title'].'</a>';
Добавлено через 3 минуты
Вы писали этот код?
0
0 / 0 / 0
Регистрация: 07.01.2014
Сообщений: 27
07.01.2014, 18:54  [ТС] 7
да ,но по статье с сайта...добавил потом немного своего...стили и изменил названия родительских и дочерних страниц в phpmyadmin...всё выводиться правильно..как хотел...только подсветку осталось сделать...поэтому и спросил...ну и ещё по тому что пишу на php РОВНО 2 МЕСЯЦА...также знаю что echo внутри echo тоже не должно работать...поэтому попросил помощи и разъяснений...
0
296 / 284 / 84
Регистрация: 10.05.2013
Сообщений: 920
07.01.2014, 19:25 8
Замените это:
PHP
1
2
3
echo '<li><a href="?category_id='.$arr[$parent_id][$i]['title_url'].
                    '&parent_id='.$parent_id.'";'if($parent_id == $arr[$parent_id][$i]['title']) echo "class='menu-active'";'';>'
                    .$arr[$parent_id][$i]['title'].'</a>';
На это:
PHP
1
2
3
echo "<li><a href=\"?category_id={$arr[$parent_id][$i]['title_url']}&parent_id={$parent_id}\""
.($parent_id == $arr[$parent_id][$i]['title'] ? ' class="menu-active"':'')
.">{$arr[$parent_id][$i]['title']}</a>";
1
0 / 0 / 0
Регистрация: 07.01.2014
Сообщений: 27
07.01.2014, 19:59  [ТС] 9
выводиться всё также))но стиль не работает))можно вопрос-тут экранируются кавычки?

Добавлено через 18 минут
100% вот тут:
PHP
1
$parent_id == $arr[$parent_id][$i]['title']
сравниваю не то что нужно))
0
0 / 0 / 0
Регистрация: 07.01.2014
Сообщений: 27
14.01.2014, 19:52  [ТС] 10
крутил разные значения,например
PHP
1
$category_id == $arr[$parent_id][$i]['title_url']
или
PHP
1
$category_id == $_GET['title_url']
ничего не выходит...помогите понять как задать условие правильно-чтоб активному пункту меню соответствовал класс со стилем:"menu-active"...
0
14.01.2014, 19:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.01.2014, 19:52
Помогаю со студенческими работами здесь

Как реализовать подсвечивание активного пункта меню - якоря?
Как в Wordpress реализовать подсвечивание активного пункта меню, если все пункты меню - ссылки на...

Настроить подсветку пункта меню при наведении
Добрый день, коллективный разум! Не могу сделать так, чтобы текст в Меню 1 подсвечивался как в...

Как сделать картинку для каждого пункта меню?
Здравствуйте, есть меню: - Пункт 1 - Пункт 2 -Пункт 3 - .... Хочу менять для каждого пункта...

Как сделать фон для текущего пункта меню?
Как сделать фон для текущего пункта меню, т.е. для пункта, на странице которого я нахожусь (не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru