[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выделение активного пункта меню
m4a1fox
Доброго времени суток уважаемые эксперты. Подскажите пожалуйста. Каким образом на php и CSS сделать выделение активного пункта меню, на котором сейчас находится пользователь. Подскажите где про это почитать можно. Спасибо.



Спустя 2 минуты, 28 секунд (6.02.2011 - 13:37) Kuliev написал(а):
m4a1fox

if($flag == 1)
{
// Выделенная ссылка
}

else
{
// Обычная ссылка
}

Спустя 22 минуты, 25 секунд (6.02.2011 - 14:00) m4a1fox написал(а):
Kuliev
Может сможете помочь с кодом. А то что-то я не догоняю. Вот мой код вывода меню
<div class="menu" align="center">
<?php
echo '<table width="900px" border="1" cellspacing="0" cellpadding="0" height="20px"><tr>';
$query = mysql_query ("SELECT `id`, `img`, `name`
FROM `menu`
"
) or die ("Ошибка -".mysql_error());
while($ind=mysql_fetch_assoc($query))
{
echo '

<td align="center"">
<a href=page.php?ind='
.(int)$ind['id'].'>
<img align="absmiddle" src="admin/img/'
.$ind['img'].'"> '.$ind['name'].
</a>
</td>
'
;
}
echo '</tr></table>';
?></div>

Спустя 17 минут, 41 секунда (6.02.2011 - 14:18) Sopromatenot написал(а):
Тебе нужно на каждой странице сделать "пометку" в виде переменной/константы и при выводе меню делать как сказал Kuliev.

Смотря как у тебя сайт организован..

Спустя 2 минуты, 20 секунд (6.02.2011 - 14:20) Kuliev написал(а):
m4a1fox

if(isset($_GET['ind']))
{
echo "<b><a href='page.php?ind=".$ind['id']."'></b>\n";
}

else
{
echo "<a href='page.php?ind=".$ind['id']."'>\n";
}

Спустя 18 минут, 16 секунд (6.02.2011 - 14:38) m4a1fox написал(а):
Kuliev
Извините, не понимаю... Видимо сложно...

Спустя 5 минут, 51 секунда (6.02.2011 - 14:44) nugle написал(а):
m4a1fox, что именно вы не понимаете?
Если существует переменная переданная ссылкой то выделять ссылку, если нет, то не выделять!

Спустя 33 секунды (6.02.2011 - 14:45) Sopromatenot написал(а):
Цитата (m4a1fox @ 6.02.2011 - 11:38)
Kuliev
Извините, не понимаю... Видимо сложно...

Тут есть примерчик как реализуется http://www.master-live.ru/php-menu.html
Принцип точно такойже.

Спустя 4 минуты, 19 секунд (6.02.2011 - 14:49) m4a1fox написал(а):
Sopromatenot
А есть разница, как я вывожу меню. Через li или через td?

Спустя 2 минуты, 49 секунд (6.02.2011 - 14:52) m4a1fox написал(а):
nugle
Понимаете, у меня ведь цикл. А в нем не доходит до меня как сделать выделение.

Спустя 2 минуты, 36 секунд (6.02.2011 - 14:54) m4a1fox написал(а):
Sopromatenot
Спасибо за ссылку, но там нет цикла( В этом-то и беда.

Спустя 2 минуты, 11 секунд (6.02.2011 - 14:56) Sopromatenot написал(а):
Дело не в цикле. Дело в том что перед тем как выводить меню нужно узнать на какой страницы находится посетитель и уже от этого писать обработку.

В том примере на каждой страницы была переменая $master которая и говорила "на какой страницы сидит пользователь".

Спустя 3 минуты, 28 секунд (6.02.2011 - 15:00) m4a1fox написал(а):
Sopromatenot
Хорошо. Вот я узнал.

<?php
if(isset($myrow['name']))
{
echo '<img align="absmiddle" src="admin/img/'.$myrow['img'].'"> '.$myrow['name'].'';
}
?>
вот тут выводится пункт меню на котором я сейчас нахожусь. Но как вписать его в этот код,
<div class="menu" align="center">
<
table width="900px" border="1" cellspacing="0" cellpadding="0" height="20px"><tr>
<?php

$query = mysql_query ("SELECT `id`, `img`, `name`
FROM `menu`
"
) or die ("Ошибка -".mysql_error());
while($ind=mysql_fetch_assoc($query))
{
echo '
<td align="center"">
<a href=page.php?ind='
.(int)$ind['id'].'>
<img align="absmiddle" src="admin/img/'
.$ind['img'].'"> '.$ind['name'].
</a>
</td>
'
;
}
?>
</tr></table>
</
div>
ума не приложу.

Спустя 17 минут, 46 секунд (6.02.2011 - 15:18) Sopromatenot написал(а):

<?php
if(isset($myrow['name']))
{
echo '<img align="absmiddle" src="admin/img/'.$myrow['img'].'"> '.$myrow['name'].'';
$master = $myrow['name'];
}
?>




if($master == $ind['name']){
echo '
<td align="center"">
<b><a href=page.php?ind='.(int)$ind['id'].'></b>
<img align="
absmiddle" src="admin/img/'.$ind['img'].'"> '.$ind['name'].'
</a>
</td>
';}
else{
echo '
<td align="
center"">
<a
href=page.php?ind='.(int)$ind['id'].'>
<img
align="absmiddle" src="admin/img/'.$ind['img'].'"> '.$ind['name'].'
</a>
</td>

';}




во ткакто так

Спустя 3 минуты, 36 секунд (6.02.2011 - 15:21) Kuliev написал(а):
m4a1fox

<?php

$query = mysql_query ("SELECT `id`, `img`, `name`
FROM `menu`"
) or die ("Ошибка -".mysql_error());
while($ind = mysql_fetch_assoc($query))
{
if($_GET['id'] == $ind['id'])
{
//Делаем выделение
}

else
//Обычная сылка
}
?>

Спустя 13 минут, 31 секунда (6.02.2011 - 15:35) m4a1fox написал(а):
Kuliev
Странно - но Ваш вариант не работает. А то что предложилSopromatenot работает.

Спустя 7 минут, 31 секунда (6.02.2011 - 15:42) Kuliev написал(а):
Цитата (m4a1fox @ 6.02.2011 - 16:35)
Kuliev
Странно - но Ваш вариант не работает. А то что предложилSopromatenot работает.

Это всего лишь пример!

Спустя 23 секунды (6.02.2011 - 15:43) m4a1fox написал(а):
Kuliev
Ясно.... Спасибо.

Спустя 31 минута, 48 секунд (6.02.2011 - 16:15) Sopromatenot написал(а):
Цитата (Kuliev @ 6.02.2011 - 12:42)
Цитата (m4a1fox @ 6.02.2011 - 16:35)
Kuliev
Странно - но Ваш вариант не работает. А то что предложилSopromatenot работает.

Это всего лишь пример!

if($_GET['id'] == $ind['id'])


Вероятно $ind['id'] это просто номера пунктов меню типа 1, 2, 3 и т.д., а в $_GET['id'] это "имя страницы" типа page1, project и пр. Поэтому и не срабатывает.
Тоесть вероятно это два разных id.

Спустя 1 час, 45 минут, 31 секунда (6.02.2011 - 18:00) inpost написал(а):
m4a1fox
А проверить параметры, которые сравнивает скрипт - сложно? Вот скрипт должен сравнить $_GET['id'] с $ind['id'], смотришь, что находится в этих переменных и обращаешь внимание на то, почему не происходит условие. Возможно в $_GET['id'] находится не $ind['id'], а $ind['title'], ты хочешь, чтобы мы за тебя всё это копали, или все-таки соизволишь проверить, какие именно данные сходятся сам?

Спустя 1 год, 5 месяцев, 11 дней, 18 часов, 32 минуты, 29 секунд (18.07.2012 - 11:33) uncle BOO написал(а):
Приветствую гуру php!
Я так и не смог реализовать в моём меню подсветку активного пункта на php. Я совсем никто в php и не смог приспособить ни один пример меню из нета. Сколько затрачено на это время, никто не угадает :rolleyes:
Помогите, пожалуйста, сделать подсветку той ссылки, на странице которой находится юзер.

Есть index.php , меню в нём вставлено через <? include("../aar/php/menu.php");?>
Меню вертикальное, без li, имеет более 50 ссылок, расположено справа, на одной строчке несколько ссылок.

Сейчас каждой ссылке присвоен класс, для подсветки через <body id="класс"> и в CSS раздутое правило (#index .index, и тд 50 классов). Хотелось бы узнать как правильно сделать на php, чтоб ссылка страницы была подсвечена и одновременно не активна как ссылка (чтоб пользователь не мог кликать в меню ссылку той страницы, где он и так уже находится).

На данный момент menu.php :
<div id="right">
<div
class="panelright">
<a
href="../index.php" class="index">Home</a>   <a href="../index/homeRU.php" class="homeRU">Предисловие</a>
<h3
class="razdel">Хронология</h3>
<a
href="../0000-1975/00001975.php" class="a0075">...1975</a>   <a href="../1976-1978/19761978.php" class="a7678">1976-1978</a>   <a href="../1979/19791980.php" class="a7980">1979-1980</a><br>
<a
href="../1981/1981.php" class="a81-1" alt="1981, часть 1">1981...</a>   <a href="../1981/1981II.php" class="a81-2">...1981</a><br>
<a
href="../1982/1982.php" class="a82-1">1982...</a>   <a href="../1982/1982II.php" class="a82-2" >...1982</a><br>
<a
href="../1983/1983.php" class="a83-1">1983...</a>   <a href="../1983/1983II.php" class="a83-2">..1983..</a> &nbsp <a href="../1983/1983III.php" class="a83-3">...1983</a><br>
<a
href="../1984/1984.php" class="a84-1">1984...</a>   <a href="../1984/1984II.php" class="a84-2">..1984..</a> &nbsp <a href="../1984/1984III.php" class="a84-3">...1984</a><br>
<a
href="../1985/1985.php" class="a85-1">1985...</a>   <a href="../1985/1985II.php" class="a85-2">..1985..</a> &nbsp <a href="../1985/1985III.php" class="a85-3">...1985</a><br>
<a
href="../1986/1986.php" class="a86-1">1986...</a>   <a href="../1986/1986II.php" class="a86-2">..1986..</a> &nbsp <a href="../1986/1986III.php" class="a86-3">...1986</a>   <a href="../1987/1987.php" class="a87">1987</a><br>
<a
href="../1988/1988.php" class="a88">1988</a>   <a href="../1989/newaccept.php" class="a89">1989</a>   <a href="../1993/newaccept1.php" class="a93">1990-1995</a><br>
<a
href="../1996/newaccept2.php" class="a9605">1996-2005</a>   <a href="../2009/newaccept3.php" class="a0910">2009-2010</a>   <a href="../2011/newaccept4.php" class="a11">2011</a><br>
<a
href="../2012/newaccept5.php" class="a12">2012...</a><br>
U.D.O. <a href="../UDO/U-D-O1.php" class="u87">1987...</a>  <a href="../UDO/U-D-O2.php" class="u97">1997...</a>  <a href="../UDO/U-D-O3.php" class="u09">2009...</a><br>
U.D.O. <a href="../UDO/U-D-O4.php" class="u12">2012...</a><br>
<a
href="../index/sostav.php" class="sostav">Состав</a>  <a href="../index/discografia.php" class="discografia">Дискография</a><br>
<a
href="../concert/concerts.php" class="concerts">Концерты</a>  <a href="../bootlegs/bootlegs.php" class="bootlegs">Бутлеги</a>  <a href="../video/video.php" class="video">Видео</a><br>
<a
href="../rar/raritet.php" class="raritet">Раритеты</a>  <a href="../magazine/jurnal.php" class="jurnal">Пресса</a>  <a href="../awards/awards.php" class="awards">Награды</a><br>
<h3
class="razdel">Биография</h3>
<a
href="../people/udo.php" class="miniudo"><img src="../aar/img/miniudo.jpg" alt="<strong>Udo  Dirkschneider</strong>"/></a> 
<a href="../people/wolf.php" class="miniwolf"><img src="../aar/img/miniwolf.jpg" alt="<strong>Wolf  Hoffmann</strong>"/></a> 
<a href="../people/peter.php" class="minipeter"><img src="../aar/img/minipeter.jpg" alt="<strong>Peter  Baltes</strong>"/></a> 
<a href="../people/jorg.php" class="minijorg"><img src="../aar/img/minijorg.jpg" alt="<strong>Jorg  Fischer</strong>"/></a> 
<a href="../people/stefan.php" class="ministefan"><img src="../aar/img/ministefan.jpg" alt="<strong>Stefan  Kaufmann</strong>"/></a><br>
<a
href="../people/gaby.php" class="minigaby">Gaby  Hauke</a><br>
<a
href="../people/michael.php" class="minimichael">Michael Wagener</a>  <a href="../people/herman.php" class="miniherman">Herman Frank</a><br>
<h3
class="razdel">Композиции</h3>
<a
href="../text/texts.php" class="texts">Тексты/Перевод</a>  <a href="../index/nota.php" class="nota">Ноты/Табы</a><br>
<h3
class="razdel">О проекте</h3>
<a
href="../forum/index.php" class="forum">ФОРУМ</a>  <a href="../people/autor.php" class="autor">Автор</a>
</div>
<!-- end .panelright -->
<a class="triggerright" href="#">Навигатор</a>
</div>
<!-- end right -->


Стиль для подсветки элементарный, типа
active {color:#0FF; cursor:none;}
хотя если надо как-то по-другому, то с радостью посмотрю.

Одна убедительная просьба, как можно максимально выкладывать код, так как помощь: воткни проверку $url = $_SERVER['REQUEST_URI']; породит у меня кучу вопросов.

Установлен Denver и Dreamweaver CS5.5

Спустя 2 дня, 2 часа, 59 минут, 2 секунды (20.07.2012 - 14:32) uncle BOO написал(а):
Жаль, что никого не заинтересовало. Может быть, если я скажу, что в сети нет решения этого вопроса (доступного к пониманию не специалистов php), и выложенный здесь рабочий вариант несомненно привлечёт к этому ресурсу дополнительное внимание, это кого-то сподобит помочь нам обычным содержателям сайтов?
Понимаю, что коль уж взялся за владение сайтом, будь добр изучай всё, что надобно.
Я лично, не сразу после прихода в голову мысли о таком меню, прошу помощи. Сам упорно пробовал несколько месяцев соединить все найденные в сети варианты, но результатом только стало отвлечение от контента сайта и его новостное развитие остановилось.
В общем, я специалист в другой области и тех.обслуживание сайта и форума отбирает у меня 90% возможностей заниматься любимым увлечением, поэтому запросил помощи.
Надеюсь, всем кто-то обращался ко мне по специфике моего сайта, я помог в полном объёме.

Спустя 2 дня, 17 часов, 14 минут, 31 секунда (23.07.2012 - 07:46) NierRa написал(а):
Мне кажется никто не хочет помочь, так как ваш код абсолютно нечитаем

Не получается реализовать подсветку на php, погуглите способы на JavaScript + CSS.

Спустя 7 часов, 24 минуты, 26 секунд (23.07.2012 - 15:11) uncle BOO написал(а):
Цитата (NierRa @ 23.07.2012 - 04:46)
ваш код абсолютно нечитаем

А можно пояснить? Что значит не читаемый код? Браузеры показывают меню так, как мне нужно.

Спустя 1 час, 26 минут, 33 секунды (23.07.2012 - 16:37) SerginhoLD написал(а):
Цитата (uncle BOO @ 23.07.2012 - 12:11)
Что значит не читаемый код? Браузеры показывают меню так, как мне нужно.

Глаза не браузер, глаза видят буквы в хаотичном порядке

Цитата (uncle BOO @ 18.07.2012 - 08:33)
Хотелось бы узнать как правильно сделать на php, чтоб ссылка страницы была подсвечена и одновременно не активна как ссылка (чтоб пользователь не мог кликать в меню ссылку той страницы, где он и так уже находится).

тут два пути
1. или все ссылки загонять хотя бы в массив, и проверять средствами php на какой странице ты находишься
2. или оставить всю эту кашу в том виде что есть, и через JavaScript проверять на какой странице ты находишься, ссылку с параметром href - равном пути в адресной строке блочишь (return false)

Спустя 1 час, 22 минуты, 46 секунд (23.07.2012 - 18:00) NierRa написал(а):
Цитата
Хотелось бы узнать как правильно сделать на php, чтоб ссылка страницы была подсвечена и одновременно не активна как ссылка (чтоб пользователь не мог кликать в меню ссылку той страницы, где он и так уже находится).


Честно не стал мудрить это дело на php.
Реализовал так:

// вставляем бибилиотеку jquery
<script src="js/jquery-1.7.2.js" type="text/javascript"></script>

// сам скрипт
<script type="text/javascript">
$(document).ready(function(){
var url=document.location.href;
$.each($("#menu a"),function(){
if(this.href==url){$(this).addClass('active');};
});
});
</script>


/* CSS */

#menu {
### какие то настройки
}

.active {
background: #000;
color: #919191 !important;
}

По поводу блокировки активной ссылки - я реализовал так - просто в стилях цвет ссылки подогнал под цвет фона.
При наведении на активную ссылку она более не подсвечивается и создается эффект неактивности. Хотя если вам это так принципиально то это другой вопрос

PS. Форматер кода не воспринимает javascript, браузер исказил отступы. Прошу прощения за плохо читаемый код

Спустя 4 часа, 22 минуты, 13 секунд (23.07.2012 - 22:22) uncle BOO написал(а):
Спасибо за ответы. На всякий случай подпишусь на тему, вдруг всё-таки кто выложит подходящий мне код php
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.