Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
130 / 15 / 6
Регистрация: 05.08.2013
Сообщений: 285

Подсветить текущую вкладку меню

13.02.2014, 09:49. Показов 2006. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Есть сайт, а на нём панель навигации.
При клике на вкладку происходит перезагрузка странички, и загрузка соответстующего вкладке url
(Никаких ajax нет)
Нужно подсвечивать активную вкладку.
Я придумал 34 варианта, как это сделать.
1)Записывать в cookie, потом читать и присваивать активный класс, той вкладке по которой перешли.
Но при открытии нового окна эта cookie тоже будет считываться и подсветится то-же самое, хотя url
может быть совсем не тот.
2)Сравнивать url и href вкладки, но тут проблема в том, что ссылки могут быть любыми в т.ч.:
href_1=/anythig/
href_2=/anythig/my/
href_3=/anythig/my/ref/
и т.д. . Т.е. при сравнении (strpos,strstr,pregmatch....) захватим лишнюю
3)Добавить ко всем href панели навигации гет параметр ?active=href_now, но этот вариант на самый крайний случай
4)Записывать в БД, href-ки, читать оттуда, а потом подсвечивать соответствующие вкладки.
Если есть у кого-нибудь мнение на этот счёт - поделитесь пожалуйста. Буду очень признателен.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.02.2014, 09:49
Ответы с готовыми решениями:

Не выходит подсветить пункт в included меню
Записал код который вроде как будет подсвечивать пункт меню который относится к текущей странице как описано в видео <li> <a...

Меню без ссылки на текущую страницу
Здравствуйте! Скажите, пожалуйста, что не так? index.php: <? ... $current_page='Главная'; require('menu.php'); ...

Закрыть текущую вкладку
Есть такой код <input id="button" type="image" value="Submit" src="http://сайт/images/bonus.png" onclick="openPodarok() ...

9
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
13.02.2014, 11:58
Цитата Сообщение от fier Посмотреть сообщение
Я придумал 34 варианта, как это сделать.
а где остальные 30 вариантов?
а вообще, неужели каждая ссылка навигации имеет почти одинаковый урл? пример кода или ссылка на сайт бы не повредили
1
 Аватар для SLameN
1 / 1 / 7
Регистрация: 29.10.2012
Сообщений: 247
13.02.2014, 12:06
ПО мне самый оптимальный вариант, это JS
0
130 / 15 / 6
Регистрация: 05.08.2013
Сообщений: 285
13.02.2014, 15:11  [ТС]
[Я придумал 34 варианта, как это сделать.]
Я придумал 4 варианта, как это сделать == недоглядел за собой)
Url задаются в БД и могут быть абсолютно любыми, поэтому рассматриваю все варианты)
0
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
13.02.2014, 15:25
Цитата Сообщение от fier Посмотреть сообщение
Url задаются в БД и могут быть абсолютно любыми, поэтому рассматриваю все варианты)
если урлы ссылок известны и берутся из базы, то может при выдачи их на страницу сравнить с $_SERVER["REQUEST_URI"] может с отрезкой доменного имени, или что-то вроде того?
1
130 / 15 / 6
Регистрация: 05.08.2013
Сообщений: 285
13.02.2014, 15:36  [ТС]
Есть вероятность захватить лишнюю
0
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
13.02.2014, 16:00
Цитата Сообщение от fier Посмотреть сообщение
Есть вероятность захватить лишнюю
я так думаю, что тут нужно что-то придумывать именно с хранением ссылок в базе, конкретно, дать каждой id, если нет. и в самом начале скрипта запихивать этот id в глобальную переменную и потом ее где нужно проверять при выводе навигации.

ну а соответствие находить только по четкому совпадению урла с записью в базе по "WHERE url='".$url."'", ($url надо вероятно будет немного подпилить напильником, добавить/удалить домен или что-то в этом роде, смотря как в базе оно лежит) без всяких лайков, strpos и preg_match.

я к тому, что раз ссылка как-то на страницу выводится из базы, то и в базе она найдется именно по этой ссылке, если запись в БД, конечно, полностью не повторяется еще раз
1
130 / 15 / 6
Регистрация: 05.08.2013
Сообщений: 285
13.02.2014, 17:11  [ТС]
БД мне нельзя трогать)
0
 Аватар для mav
228 / 206 / 120
Регистрация: 23.06.2009
Сообщений: 481
13.02.2014, 18:01
Цитата Сообщение от fier Посмотреть сообщение
БД мне нельзя трогать)
ну тогда пробовать таки найти строгое соответствие текста в таблице БД с $_SERVER["REQUEST_URI"] как-то... идеи кончились
1
130 / 15 / 6
Регистрация: 05.08.2013
Сообщений: 285
15.02.2014, 18:42  [ТС]
Огромное спасибо за участие.
Решил проблему следующим образом.
Беру весь массив с href'ми и начитаю сравнивать с $_SERVER['REQUERS_URI'].
3 этапа сравнения.
1)Находим все href, которые входят в $_SERVER['REQUERS_URI'], записываем в массив
2)Находим все из вновь полученных, которые входят в $_SERVER['REQUERS_URI'] с его начала и до конца своей длины.
PHP
1
$href[$i]==substr($_SERVER['REQUERS_URI'],0,strlen($href[$i])-1)
, записываем в массив
3)Находим все из вновь полученных, элемент с наибольшим числом слэшей, это и есть нужный нам href

Добавлено через 1 минуту
Будет работать только для абсолютных href.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.02.2014, 18:42
Помогаю со студенческими работами здесь

Как подсветить открытый пункт меню в Joomla 3.4.8?
Здравствуйте! Помогите пожалуйста в таком вопросе. На сайте (vseobraz.ru) в левом вертикальном меню высвечиваются названия категорий в...

Как вставить запись в вкладку меню
Допустим написал я запись YYY, и она появилась на главной странице. Сделал вкладку в меню: XXX Мне нужно, что-бы эта запись была внутри...

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

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

Как сделать некликабельной текущую страницу пункта меню
Здравствуйте, подскажите кто знает, как сделать некликабельной текущую страницу пункта меню. Допустим у меня на блоге есть пункты...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru