Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: подсветка выделенного пункта меню
Форумы портала PHP.SU » » Вопросы новичков » подсветка выделенного пункта меню

Страниц (1): [1]
 

1. p1us - 22 Сентября, 2011 - 08:06:08 - перейти к сообщению
Форумчане доброе утро!

Подскажите пожалуйста как сделать подсветку выделенного пункта меню, чтобы пользователь всегда знал в какой части сайта он находится.
Мой знакомый подсказал что делается через $_SERVER['что-то'], но пока не понимаю как это реализовать, но вот мой недоделанный вариант, который не знаю как доделать:

PHP:
скопировать код в буфер обмена
  1. $menuitems("x","y","z");
  2. foreach($menuitems as $m)
  3. {if($m==$_SERVER['PHP_SELF'])
  4. {echo"..." ;}
  5. else {echo"...";};}


по такой логике x,y,z = .../index.php, .../reg.php, .../save.php , к примеру.

но тогда не пойму как выводить через echo подсветку ссылки и такую ли $_SERVER юзаи. Подскажите плз, кто знает Однако
2. -=1100=- - 22 Сентября, 2011 - 08:41:39 - перейти к сообщению
Может что то вроде этого ..
PHP:
скопировать код в буфер обмена
  1.   $menuitems("x","y","z");
  2.     foreach($menuitems as $m){
  3.        if($m==$_SERVER['PHP_SELF']){
  4.           echo"<a class='xxx' href=''></a>";
  5.        }else{
  6.            echo"<a class='yyyy' href=''></a>";
  7.        }
  8.    }


Правда ссылки тоже должны быть изначально в массиве
3. p1us - 22 Сентября, 2011 - 09:34:04 - перейти к сообщению
-=1100=- пишет:
Может что то вроде этого ..
PHP:
скопировать код в буфер обмена

$menuitems("x","y","z");
foreach($menuitems as $m){
if($m==$_SERVER['PHP_SELF']){
echo"<a class='xxx' href=''></a>";
}else{
echo"<a class='yyyy' href=''></a>";
}
}



Правда ссылки тоже должны быть изначально в массиве


поправьте меня пожалуйста, если я не прав, изначально $menuitems("x","y","z");

x,y,z - это ведь названия пунктов меню x-главная, к примеру.

тогда получается что:

PHP:
скопировать код в буфер обмена
  1.     $menuitems("главная","y","z");
  2.         foreach($menuitems as $m){
  3.            if($m==$_SERVER['PHP_SELF']){
  4.               echo"<a class='xxx' href=''></a>";
  5.            }else{
  6.                echo"<a class='yyyy' href=''></a>";
  7.            }
  8.        }


тогда нужно, чтобы определенному значениею $m было присвоено определенное значение ссылки. И echo"<a class='xxx' href='http://www[dot]yago[dot]ru/index.php'><?php echo { "www.MMM.ru."$m;}?></a>".. , так или о5 не в ту чащу? Ниндзя
4. -=1100=- - 22 Сентября, 2011 - 09:44:02 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2.   $menuitems("http://www.yago.ru/index.php","http://www.yago.ru/news.php","http://www.yago.ru/photo.php");
  3.         foreach($menuitems as $m){
  4.            if($m==$_SERVER['PHP_SELF']){
  5.               echo"<a class='xxx' href='".$m."'></a>";
  6.            }else{
  7.                echo"<a class='yyyy' href='".$m."'></a>";
  8.            }
  9.        }
  10.  


Но тут возникает проблема откуда брать название ссылок. Можно конечно так сделать

PHP:
скопировать код в буфер обмена
  1.  
  2.  $menu("Главная","Новости","Фотографии");
  3.   $menuitems("http://www.yago.ru/index.php","http://www.yago.ru/news.php","http://www.yago.ru/photo.php");
  4.        $i=0;
  5.         foreach($menuitems as $m){
  6.            if($m==$_SERVER['PHP_SELF']){
  7.               echo"<a class='xxx' href='".$m."'>".$menu[$i]."</a>";
  8.            }else{
  9.                echo"<a class='yyyy' href='".$m."'>".$menu[$i]."</a>";
  10.            }
  11.         $i++;
  12.        }
  13.  
5. p1us - 22 Сентября, 2011 - 09:55:00 - перейти к сообщению
аха, если я правильно понял, остается связать $menu("Главная","Новости","Фотографии"); с действующим меню?
6. -=1100=- - 22 Сентября, 2011 - 10:01:42 - перейти к сообщению
Скорее всего да. Я просто не совсем понимаю как оно у вас формируется.
Единственное, надо что бы $menuitems и $menu совпадали по количеству значений.
7. p1us - 22 Сентября, 2011 - 10:04:03 - перейти к сообщению
-=1100=- пишет:
Скорее всего да. Я просто не совсем понимаю как оно у вас формируется.
Единственное, надо что бы $menuitems и $menu совпадали по количеству значений.


по значениям ясно, а формируется меню у меня
CODE (html):
скопировать код в буфер обмена
  1.         <tr>
  2.                 <td width="200px" align="center" bgcolor="#FF8863"><a href="1.php?id=2" class="nav">1</a></br><p><a href="1.php?id=2" class="nav_title">Знакомства</a></p></td>
  3.                 <td width="200px" align="center" bgcolor="#FFB463"><a href="2.php?id=3" class="nav">2</a></br><p><a href="2.php?id=3" class="nav_title">Технология</a></p></td>
  4.                 <td width="200px" align="center" bgcolor="#E8D85A"><a href="3.php?id=4" class="nav">3</a></br><p><a href="3.php?id=4" class="nav_title">Качетсво</a></p></td>
  5.                 <td width="200px" align="center" bgcolor="#CBE856"><a href="4.php?id=5" class="nav">4</a></br><p><a href="4.php?id=5" class="nav_title">Эксперементы</a></p></td>
  6.                 <td width="200px" align="center" bgcolor="#70FF63"><a href="5.php?id=6" class="nav">5</a></br><p><a href="5.php?id=6" class="nav_title">Торговля</a></p></td>
  7.         </tr>

как их связать можно?
8. Stasnislav - 22 Сентября, 2011 - 10:07:18 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. $arMenu = array(
  3.         array(
  4.                 "NAME" => "Главная",
  5.                 "LINK" => "адрес"
  6.         ),
  7.         array(
  8.                 "NAME" => "Новости",
  9.                 "LINK" => "адрес"
  10.         )
  11. );
  12. foreach ($arMenu as $Item) {
  13.         if ($Item["LINK"] == $_SERVER['PHP_SELF']) {
  14.                 echo '<li class="act"><a href="'.$Item["LINK"].'">'.$Item["NAME"].'</a></li>';
  15.         } else {
  16.                 echo '<li><a href="'.$Item["LINK"].'">'.$Item["NAME"].'</a></li>';
  17.         }
  18. }
  19.  


P.S. у ссылки меню есть 3 значения:
- активная,
- активная нетекущая,
- неактивная
9. p1us - 22 Сентября, 2011 - 10:11:38 - перейти к сообщению
Stasnislav пишет:
PHP:
скопировать код в буфер обмена
  1.  
  2. $arMenu = array(
  3.         array(
  4.                 "NAME" => "Главная",
  5.                 "LINK" => "адрес"
  6.         ),
  7.         array(
  8.                 "NAME" => "Новости",
  9.                 "LINK" => "адрес"
  10.         )
  11. );
  12. foreach ($arMenu as $Item) {
  13.         if ($Item["LINK"] == $_SERVER['PHP_SELF']) {
  14.                 echo '<li class="act"><a href="'.$Item["LINK"].'">'.$Item["NAME"].'</a></li>';
  15.         } else {
  16.                 echo '<li><a href="'.$Item["LINK"].'">'.$Item["NAME"].'</a></li>';
  17.         }
  18. }
  19.  


P.S. у ссылки меню есть 3 значения:
- активная,
- активная нетекущая,
- неактивная


классно, но пока тоже не понимаю как Вы соединяете с меню, которое выводится в браузере пользователя. Прошу меня извинить , если у меня некорректные вопросы Улыбка . Связь иногда четкую не прослеживаю и просто хочу разобраться
10. Stasnislav - 22 Сентября, 2011 - 10:11:46 - перейти к сообщению
p1us пишет:

CODE (html):
скопировать код в буфер обмена
  1.         <tr>
  2.                 <td width="200px" align="center" bgcolor="#FF8863"><a href="1.php?id=2" class="nav">1</a></br><p><a href="1.php?id=2" class="nav_title">Знакомства</a></p></td>
  3.                 <td width="200px" align="center" bgcolor="#FFB463"><a href="2.php?id=3" class="nav">2</a></br><p><a href="2.php?id=3" class="nav_title">Технология</a></p></td>
  4.                 <td width="200px" align="center" bgcolor="#E8D85A"><a href="3.php?id=4" class="nav">3</a></br><p><a href="3.php?id=4" class="nav_title">Качетсво</a></p></td>
  5.                 <td width="200px" align="center" bgcolor="#CBE856"><a href="4.php?id=5" class="nav">4</a></br><p><a href="4.php?id=5" class="nav_title">Эксперементы</a></p></td>
  6.                 <td width="200px" align="center" bgcolor="#70FF63"><a href="5.php?id=6" class="nav">5</a></br><p><a href="5.php?id=6" class="nav_title">Торговля</a></p></td>
  7.         </tr>


Этот код стоит удалить и забыть как можно быстрее, без обид... Тэги должны использоваться по своему прямому назначению, а не изобретать велосипед... если нужно меню, значит использую маркированный список (<ul></ul>)
(Добавление)
p1us пишет:

классно, но пока тоже не понимаю как Вы соединяете с меню, которое выводится в браузере пользователя. Прошу меня извинить , если у меня некорректные вопросы Улыбка . Связь иногда четкую не прослеживаю и просто хочу разобраться

этот код Вы используете при построении самого меню на сайте, других связей нет.
11. p1us - 22 Сентября, 2011 - 10:22:46 - перейти к сообщению
Stasnislav пишет:
p1us пишет:

CODE (html):
скопировать код в буфер обмена
  1.         <tr>
  2.                 <td width="200px" align="center" bgcolor="#FF8863"><a href="1.php?id=2" class="nav">1</a></br><p><a href="1.php?id=2" class="nav_title">Знакомства</a></p></td>
  3.                 <td width="200px" align="center" bgcolor="#FFB463"><a href="2.php?id=3" class="nav">2</a></br><p><a href="2.php?id=3" class="nav_title">Технология</a></p></td>
  4.                 <td width="200px" align="center" bgcolor="#E8D85A"><a href="3.php?id=4" class="nav">3</a></br><p><a href="3.php?id=4" class="nav_title">Качетсво</a></p></td>
  5.                 <td width="200px" align="center" bgcolor="#CBE856"><a href="4.php?id=5" class="nav">4</a></br><p><a href="4.php?id=5" class="nav_title">Эксперементы</a></p></td>
  6.                 <td width="200px" align="center" bgcolor="#70FF63"><a href="5.php?id=6" class="nav">5</a></br><p><a href="5.php?id=6" class="nav_title">Торговля</a></p></td>
  7.         </tr>


Этот код стоит удалить и забыть как можно быстрее, без обид... Тэги должны использоваться по своему прямому назначению, а не изобретать велосипед... если нужно меню, значит использую маркированный список (<ul></ul>)


с радостью выкину и забуду, делаю как умею., а умею очень мало.
меню будет выглядить так:
<ul>
<li><?php echo $Item['NAME'];?></li>
</ul>
12. Stasnislav - 22 Сентября, 2011 - 10:30:13 - перейти к сообщению
p1us пишет:

с радостью выкину и забуду, делаю как умею., а умею очень мало.
меню будет выглядить так:
<ul>
<li><?php echo $Item['NAME'];?></li>
</ul>


в общем случае так:
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. <ul>
  4.      <li><a href="<?=$Item['LINK']?>"><?=$Item['NAME']?></a></li>
  5. </ul>
  6.  
13. p1us - 22 Сентября, 2011 - 10:38:27 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. $arMenu = array(
  3.             array(
  4.                     "NAME" => "Главная",
  5.                     "LINK" => "http://www.yago.ru/index.php"
  6.             ),
  7.             array(
  8.                     "NAME" => "Новости",
  9.                     "LINK" => "http://www.yago.ru/news.php"
  10.             )
  11.     );
  12.     foreach ($arMenu as $Item) {
  13.             if ($Item["LINK"] == $_SERVER['PHP_SELF']) {
  14.                     echo '<li class="act"><a href="'.$Item["LINK"].'">'.$Item["NAME"].'</a></li>';
  15.             } else {
  16.                     echo '<li><a href="'.$Item["LINK"].'">'.$Item["NAME"].'</a></li>';
  17.             }
  18.     }
  19.      

то есть, интерпритатор по ссылке будет выдавать и название? Подозреваемый
14. Stasnislav - 22 Сентября, 2011 - 10:47:14 - перейти к сообщению
p1us пишет:

то есть, интерпритатор по ссылке будет выдавать и название? Подозреваемый


эх, идейку то ты не уловил Хорошо
В массив $arMenu ты засовываешь все свои пункты меню (названия и ссылки). Открываешь <ul>, затем проходишься по всему массиву и смотришь, если ссылка активаня, то соответствующий класс, неактивная - другой класс... т.е. у тебя выведутся все пункты меню из массива...

PHP:
скопировать код в буфер обмена
  1.  
  2. <ul>
  3.  <?$arMenu = array(
  4.             array(
  5.                     "NAME" => "Главная",
  6.                     "LINK" => "http://www.yago.ru/index.php"
  7.             ),
  8.             array(
  9.                     "NAME" => "Новости",
  10.                     "LINK" => "http://www.yago.ru/news.php"
  11.             )
  12.     );
  13.     foreach ($arMenu as $Item) {
  14.             if ($Item["LINK"] == $_SERVER['PHP_SELF']) {
  15.                     echo '<li class="act"><a href="'.$Item["LINK"].'">'.$Item["NAME"].'</a></li>';
  16.             } else {
  17.                     echo '<li><a href="'.$Item["LINK"].'">'.$Item["NAME"].'</a></li>';
  18.             }
  19.     }
  20.    ?>
  21.    </ul>
  22.  
15. p1us - 22 Сентября, 2011 - 10:51:06 - перейти к сообщению
Stasnislav пишет:
эх, идейку то ты не уловил Хорошо

да, я ее отчасти уловил, но пока не получается коды адекватные писать. желание есть, опыта совсем нет=)
сейчас все предельно ясно, спасибо -=1000=- и Stasnislav) очень Вам признателен Подмигивание

 

Powered by ExBB FM 1.0 RC1