Константин
Новичок
Выделение активного пункта меню (частный случай)
Доброго времени суток!
Ребят, может вы сталкивались с подобными проблемами...
--------------------------------------------------------------------
Расскажу с начала:
Сайт, написанный мною, состоит из 3 html частей.
1 часть: лого + меню
2 часть: открытие таблицы и содержимое
переменной $content
3 часть: закрытие таблицы
2 и 3 часть на рисунке выделены красной рамкой.
То есть в пределах этой рамки можно засунуть любой html.
--------------------------------------------------------------------
Вот структура сайта:
Проблема в следующем:
Мне нужно чтобы когда я захожу в пункт меню, он выделялся и оставался выделенным пока я нахожусь в нем, смотрю его страницы.
То есть, например, если я зашел в <a href='index.php?page=2'>Пункт 1</a>(см. рис.), загрузилась страница 'index.php?page=2', а затем нажал на ссылку <a href='index.php?page=10'>Ссылка 1</a>, которая находиться на странице "index.php?page=2", но при этом "Пункт 1" остался выделенным, так как я нахожусь внутри него.
То есть это совсем разные страницы, которых ничего не связывает, кроме как путь как добраться до них.
<a href='index.php?page=2'>Пункт 1</a> -> <a href='index.php?page=10'>Ссылка 1</a>
Вот что мне необходимо, схематично:
Пункт 1
_________сслыка 1
_________ссылка 2
Пункт 2
Пункт 3
Пункт 4
Вот как меню строится (в этом коде реализуется только выделение основного меню, идет сравнение location с адресом ссылки каждого пункта меню, и если они совпадают, то выделяем этот пункт, но при переходе на другую страницу location меняется и выделение изчезает):
Я попробовал сделать это 2 способами:
1. В cookies засовываю мой location. То есть пока я нахожусь в одном из пунктов меню, пункт меню выделяется и location не меняется.
Работает, но кукис не успевает меняться и выделяется предыдущий пункт меню, а потом тот куда зашел. Такая же ситуация и с $_SESSION[] - не успевает
2. Сделал это с флагами.
То есть каждому пункту меню соответствует свой идентификатор, передаваемый методом GET
Например: <a href='index.php?page=2&flag=punkt1'>Пункт 1</a>
И если заходить на любые страницы внутри сайта, в ссылке на которую будет присутствовать "flag=punkt1", то этот пункт будет выделяться.
На этой идее и остановился, но мне она очень не нравиться, так как любой пользователь сможет изменить "flag" и выделен будет совсем другой пункт меню, нежели чему принадлежит страница.
--------------------------------------------------------------------
Очень прошу помочь мне с реализацией этой задачи!
Доброго времени суток!
Ребят, может вы сталкивались с подобными проблемами...
--------------------------------------------------------------------
Расскажу с начала:
Сайт, написанный мною, состоит из 3 html частей.
1 часть: лого + меню
2 часть: открытие таблицы и содержимое
переменной $content
3 часть: закрытие таблицы
2 и 3 часть на рисунке выделены красной рамкой.
То есть в пределах этой рамки можно засунуть любой html.
--------------------------------------------------------------------
Вот структура сайта:

Проблема в следующем:
Мне нужно чтобы когда я захожу в пункт меню, он выделялся и оставался выделенным пока я нахожусь в нем, смотрю его страницы.
То есть, например, если я зашел в <a href='index.php?page=2'>Пункт 1</a>(см. рис.), загрузилась страница 'index.php?page=2', а затем нажал на ссылку <a href='index.php?page=10'>Ссылка 1</a>, которая находиться на странице "index.php?page=2", но при этом "Пункт 1" остался выделенным, так как я нахожусь внутри него.
То есть это совсем разные страницы, которых ничего не связывает, кроме как путь как добраться до них.
<a href='index.php?page=2'>Пункт 1</a> -> <a href='index.php?page=10'>Ссылка 1</a>
Вот что мне необходимо, схематично:
Пункт 1
_________сслыка 1
_________ссылка 2
Пункт 2
Пункт 3
Пункт 4
Вот как меню строится (в этом коде реализуется только выделение основного меню, идет сравнение location с адресом ссылки каждого пункта меню, и если они совпадают, то выделяем этот пункт, но при переходе на другую страницу location меняется и выделение изчезает):
PHP:
// моё расположение или то что отображается в строке адреса браузера
$this = eregi_replace("^.*\/", "", @$_SERVER['REQUEST_URI']);
$menu = "";
$result = sql_query("SELECT link_title, link_addr FROM menu", $dbi);
while(list($link_title, $link_addr) = sql_fetch_row($result))
{
if($link_addr != "" && $link_title != "")
{
$bold = "";
if($this == $link_addr)
{
$bold = "style=\"font-weight:bold;\"";
}
$menu .= "<a class=\"top_menu\" ".$bold." href=\"".$link_addr."\">".$link_title."</a> ".$exploder."\n";
}
}
Я попробовал сделать это 2 способами:
1. В cookies засовываю мой location. То есть пока я нахожусь в одном из пунктов меню, пункт меню выделяется и location не меняется.
Работает, но кукис не успевает меняться и выделяется предыдущий пункт меню, а потом тот куда зашел. Такая же ситуация и с $_SESSION[] - не успевает
2. Сделал это с флагами.
То есть каждому пункту меню соответствует свой идентификатор, передаваемый методом GET
Например: <a href='index.php?page=2&flag=punkt1'>Пункт 1</a>
И если заходить на любые страницы внутри сайта, в ссылке на которую будет присутствовать "flag=punkt1", то этот пункт будет выделяться.
На этой идее и остановился, но мне она очень не нравиться, так как любой пользователь сможет изменить "flag" и выделен будет совсем другой пункт меню, нежели чему принадлежит страница.
--------------------------------------------------------------------
Очень прошу помочь мне с реализацией этой задачи!
