Создать ответ 
Выделение текущего пункта меню на php
Автор Сообщение
Winston Не на форуме
Старшина
*

Сообщений: 55
У нас с: Jan 2013
Сообщение: #1
Выделение текущего пункта меню на php
Здравствуйте, кто знает, как можно выделить текущий пункт меню на php?

И чтоб он выделялся не зависимо от уровня вложенности страницы.

На данный момент выделяются только страницы первого уровня, а вот дальше
подсветка меню не работает.
14.05.2013 12:36:04
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #2
RE: Выделение текущего пункта меню на php
Вы бы хоть код привели или пояснили поточнее, а то вообще не понятно что сделать надо.
14.05.2013 18:54:23
Найти все сообщения Цитировать это сообщение
Winston Не на форуме
Старшина
*

Сообщений: 55
У нас с: Jan 2013
Сообщение: #3
RE: Выделение текущего пункта меню на php
(14.05.2013 18:54:23)Admin писал(а):  Вы бы хоть код привели или пояснили поточнее, а то вообще не понятно что сделать надо.


PHP код:
<ul id="menu">
<?
php 
$result 
mysql_query("SELECT id,url,title FROM category LIMIT 8 ",$db);
while ( 
$myrow mysql_fetch_array$result) ){
        
$url '/'.$myrow['url'];
            if(
$url != $_SERVER['REQUEST_URI']){
                echo 
'<li><a href="'.$url.'">'.$myrow['title'].'</a></li>';
            }
            else{
                echo 
'<li><a href="">'.$myrow['title'].'</a></li>';
            }
        }
?>
</ul> 

Здесь выводится меню и ссылки категорий, ссылки к статьям и сами статьи хранятся в другой таблице, собственно ссылка выделяется когда находишься на сайт.ру/категория.html ,а ссылка такого плана сайт.ру/категория/статья.html уже не выделяется.
15.05.2013 13:36:29
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #4
RE: Выделение текущего пункта меню на php
Код, который Вы привели, только добавляет ссылки.

А подсветка меню у Вас наверняка реализована на CSS или jQuery. Ищите, где у Вас изменяется стиль <ul id="menu">.

Киньте Url в личку, погляжу.
15.05.2013 19:11:48
Найти все сообщения Цитировать это сообщение
Winston Не на форуме
Старшина
*

Сообщений: 55
У нас с: Jan 2013
Сообщение: #5
RE: Выделение текущего пункта меню на php
Ой извенюсь ошибся,вот так получается

PHP код:
{
                echo 
'<li><a href="'.$url.'">'.$myrow['title'].'</a></li>';
            }
            else{
                echo 
'<li class="active"><a href="">'.$myrow['title'].'</a></li>';
            } 
16.05.2013 03:41:55
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #6
RE: Выделение текущего пункта меню на php
Еще пару вопросов:
1) Вам надо выделить один из пунктов "Главная", "Строительство", "Кровля" и т.д. при нахождении на одной из вложенных страничек данной категории?
2) В каком виде у Вас хранятся url в category? stroitelstvo.html, krovlya.html или вида site.ru/troitelstvo.html, site.ru/krovlya.html? Приведите примеры пары значений поля url из таблицы category чтобы знать с чем сравниваем.
16.05.2013 21:58:33
Найти все сообщения Цитировать это сообщение
Winston Не на форуме
Старшина
*

Сообщений: 55
У нас с: Jan 2013
Сообщение: #7
RE: Выделение текущего пункта меню на php
Цитата:1) Вам надо выделить один из пунктов "Главная", "Строительство", "Кровля" и т.д. при нахождении на одной из вложенных страничек данной категории?

Да именно это и нужно.

Цитата:2) В каком виде у Вас хранятся url в category? stroitelstvo.html, krovlya.html или вида site.ru/troitelstvo.html, site.ru/krovlya.html? Приведите примеры пары значений поля url из таблицы category чтобы знать с чем сравниваем.

В виде stroitelstvo.html, а вложенные страницы со статьями, хранятся в таком же виде, но только в другой таблице.
17.05.2013 02:50:51
Найти все сообщения Цитировать это сообщение
Winston Не на форуме
Старшина
*

Сообщений: 55
У нас с: Jan 2013
Сообщение: #8
RE: Выделение текущего пункта меню на php
Цитата:Приведите примеры пары значений поля url из таблицы category чтобы знать с чем сравниваем.

Я так понимаю, Вы имели ввиду id - тогда получается так, в таблице category

к примеру category id=1=stroitelstvo

таблица content id_cat=1=stroitelstvo

а значит category id=2=krovlya

таблица content id_cat=2=krovlya и т.д.

Т.е. сравниваем id из category с id_cat из content.
17.05.2013 11:09:17
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #9
RE: Выделение текущего пункта меню на php
Попробуйте такой код:
PHP код:
<ul id="menu">
<?
php
$result 
mysql_query("SELECT id,url,title FROM category LIMIT 8 ",$db);
while ( 
$myrow mysql_fetch_array$result) ){
            
$url '/'.substr($myrow['url'], 0, -5);
            if (
strpos($_SERVER['REQUEST_URI'], $url)=== false) {
                echo 
'<li><a href="'.$url.'">'.$myrow['title'].'</a></li>';
            }
            else{
                echo 
'<li class="active"><a href="">'.$myrow['title'].'</a></li>';
            }
        }
?>
</ul> 

Чуть подробнее о коде.
В нем мы берем по очереди ссылки на категории (stroitelstvo.html и т.д.), удаляем из них .html и добавляем спереди один слеш. Лучше конечно было бы добавить еще и в конце, но придется только один, чтобы работало, когда мы на страничке категории. Таким образом, из stroitelstvo.html мы получаем /stroitelstvo. Далее ищем вхождение в URL адрес текущей темы (того, что в строке браузера) полученной строки /stroitelstvo. Если нашли, то добавляем класс и удаляем ссылку.

Есть и свои подводные камни - если какая-нибудь тема из другой категории начинается с stroitelstvo, то будет подсвечено сразу две категории.

К сожалению проверить сам не могу, т.к. нужна база, которую естественно никто не даст, так что писал на глаз.
17.05.2013 20:28:18
Найти все сообщения Цитировать это сообщение
Winston Не на форуме
Старшина
*

Сообщений: 55
У нас с: Jan 2013
Сообщение: #10
RE: Выделение текущего пункта меню на php
Спасибо! Но немного не правильно работает. Получается Когда находимся на категории, то подсвечивается и категория и главная, а надо ж чтоб если, находимся на категории, то подсвечена только категория.

И когда находимся на вложенной страницы ,то обратно через меню не можем вернуться в раздел категории, получаем error 404.Т.к. ссылка имеет вид /stroitelstvo, а должно быть /stroitelstvo.html
18.05.2013 01:01:29
Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


Пользователи просматривают эту тему: 1 Гость(ей)


LiveInternet
© Copyright 2011-2024 by UsefulScript.ru