#php
#php
Вопрос:
У меня есть небольшой веб-сайт на php, на котором есть меню, включаемое через include_once . Мне нужен HTML-класс, добавленный в текущий пункт меню для каждой страницы.
Поэтому, если пользователь нажимает на ссылку и переходит на эту страницу, новая страница загрузится с новым пунктом меню с class=»current» . Как я могу это сделать?
Комментарии:
1. Довольно сложно, не видя никакого вашего кода, пожалуйста, подумайте о добавлении вашего html для меню и о том, как оно генерируется в вашем php; также, как вы указываете текущую страницу (массив $ _GET или другой)
Ответ №1:
Допустим, вы пишете свое меню следующим образом:
<ul>
<li><a href="link1.com?menu=1"> Link1 </a></li>
<li><a href="link2.com?menu=1"> Link2 </a></li>
<li><a href="link3.com?menu=1"> Link3 </a></li>
</ul>
Вот старое доброе решение в стиле php4:-p
<?php
//you get which link was clicked
if(isset($_GET['menu']) $menu = $_GET['menu'];
else $menu = 1;
$1 = $2 = $3 = ""; //you create 3 empty strings
switch($menu){ //you assign the correct string with your css class name
case "1": $1 = 'class="current"';break;
case "2": $2 = 'class="current"';break;
case "3": $3 = 'class="current"';break;
}
?>
//echo the variables into the menu anchors ( <?=$1?> is equivalent to <? echo $1; ?> )
<ul>
<li><a href="link1.com?menu=1" <?=$1?> >Link1</a></li>
<li><a href="link2.com?menu=2" <?=$2?> >Link2</a></li>
<li><a href="link3.com?menu=3" <?=$3?> >Link3</a></li>
</ul>
Вы также можете поместить <?=$1?>
класс в <li>
или в любое другое нужное место…
Если вы используете javascript в своем проекте, вы также можете присвоить идентификатор своим якорям (например <a href="link1.com?menu=1" id="link1">Link1</a>
), получить значение меню, как указано выше, с помощью $ _GET, а затем использовать javascript для добавления класса к нужной ссылке.
Я дал вам этот ответ, потому что из того, что вы пишете, я предполагаю, что вы не используете какой-либо фреймворк PHP, а кодируете свое приложение по-старому … здесь есть много хороших фреймворков PHP, которые будут иметь готовое решение для этого … может быть, вначале это сложно, но оно того стоит…
Удачи!