PHP устанавливает активную ссылку на странице, используя
Итак, я искал SO в течение часа, пытаясь найти ответ, а также пробовал различные методы, включая этот
Я пытаюсь включить свои страницы вместе с навигацией. Но на правильной странице мне нужен элемент списка, чтобы иметь класс active
. Навигация в header.php и в настоящее время выглядит следующим образом:
<nav>
<ul>
<li class="active"> <a href="/">Home</a> </li>
<li> <a href="#">Apps</a> </li>
<li> <a href="#">Forums</a> </li>
</ul>
</nav>
Во-первых, я понятия не имею, будет ли лучше JS (jQuery), или если PHP будет лучше. Оба не имеют значения, работает ли это.
Также я немного новичок в PHP и стараюсь учиться.
Какой будет самый простой (надеюсь) метод? Поэтому мне не нужно менять много кода, чтобы дать команду nav class="active"
Ответы
Ответ 1
Асумпинг: у вас есть переменная $page
(которая содержит имя страницы, в которой вы сейчас находитесь):
<nav>
<ul>
<li class="<?php echo ($page == "home" ? "active" : "")?>"> <a href="/">Home</a> </li>
<li class="<?php echo ($page == "apps" ? "active" : "")?>"> <a href="#">Apps</a> </li>
<li class="<?php echo ($page == "forums" ? "active" : "")?>"> <a href="#">Forums</a> </li>
</ul>
</nav>
Ответ 2
Вот простой способ, при котором вам не нужно добавлять какую-либо другую переменную
<li class="<?php echo ($_SERVER['PHP_SELF'] == "/index.php" ? "active" : "");?>">
<a href="index.php">Start</a>
</li>
<li class="<?php echo ($_SERVER['PHP_SELF'] == "/about.php" ? "active" : "");?>">
<a href="about.php">About</a>
</li>
<li class="<?php echo ($_SERVER['PHP_SELF'] == "/practices.php" ? "active" : "");?>">
<a href="practices.php">Practices</a>
</li>
Ответ 3
если вы используете строку запроса exmaple.com?page_id=Apps
для передачи идентификатора страницы, чем с помощью php, вы можете
подходите к этой вещи
$page_id = $_REQUEST ['page_id'];
<ul>
<li class="<?php echo ($page_id == "Home" ? "active" : "");?>">
<a href="/">Home</a>
</li>
<li class="<?php echo ($page_id == "Apps" ? "active" : "");?>">
<a href="#">Apps</a>
</li>
<li class="<?php echo ($page_id == "Forums" ? "active" : ""); ?>">
<a href="#">Forums</a>
</li>
</ul>
Ответ 4
В заголовке страницы используйте:
<?php $loc = this.location; ?>
Затем в каждой ссылке добавьте:
<?php(this.href == $loc) ? echo 'class="active"' : '' ?>
Ответ 5
Если вы не хотите использовать jQuery или PHP, можете сделать следующее:
- Введите идентификатор или другой класс для каждого элемента
<li>
в "your-include-nav.php".
- Определите "активный" стиль с CSS в разделе
<head>
на каждой странице.
Ответ 6
определить переменную $ page = "index.php" на странице index.php, а для других страниц изменить значение переменной в соответствии с именем страницы
<li class="<?php echo ($page == "index.php" ? "active" : "")?>">
<a href="index.php">Home</a>
</li>
<li class="<?php echo ($page == "about.php" ? "active" : "")?>">
<a href="about.php">About</a>
</li>
<li class="<?php echo ($page == "service.php" ? "active" : "")?>">
<a href="service.php">Services</a>
</li>
<li class="<?php echo ($page == "contact.php" ? "active" : "")?>">
<a href="contact.php">Contact</a>
</li>
Ответ 7
Добавьте функцию basename
перед $_SERVER
. Я надеюсь, что это сработает.
echo (basename($_SERVER['PHP_SELF']) == 'yourPageName' ?'active' : " ");
Ответ 8
$page_url = $_SERVER['QUERY_STRING'];
$s = explode("&",$page_url);
//print $s[0];
$page = $s[0];
function createTopNav($page)
{
$pages = array(
array(
'name'=>'Feeder',
'link'=>'page=feeder'
),
array(
'name'=>'Services',
'link'=>'page=services'
),
array(
'name'=>'Development',
'link'=>'page=development'
),
array(
'name'=>'Design',
'link'=>'page=design'
),
);
$res = "";
foreach($pages as $key=>$val)
{
if($val['link']==$page)
{
$res.= "<a class=\"active\" href=\"?"
.$val['link'].
"\">"
.$val['name'].
"</a>";
}
else
{
$res.= "<a class=\"\" href=\"?"
.$val['link'].
"\" >"
.$val['name'].
"</a>";
}
}
$res.="";
return $res;
}
echo createTopNav($page);