#php #html #css
#php #HTML #css
Вопрос:
Я пытаюсь создать динамическую навигационную систему php, которая показывает активную вкладку, но, похоже, не может заставить работать часть отображения активной вкладки. Хотя я нашел более простые способы сделать это, все они требуют использования php в исходном файле. Я хотел бы иметь возможность просто вызывать функцию, которая возвращает или повторяет навигацию и устанавливает активную страницу. Любые предложения приветствуются!
Мой index.php файл:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Helps with rendering on different size machines -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Keeps user from scrolling -->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<!-- Main CSS style -->
<link rel="stylesheet" href="media/css/mainStyle.css">
<!-- Import php form with functions for navigation-->
<title> Shoe Site </title>
</head>
<body>
<?php
require 'mainPhp.php';
echo Navigation();
?>
<!-- Jumbotron -->
<div class="jumbotron">
<h1>Welcome to the Shoe Site</h1>
<p class="lead">Description of site.</p>
</div>
<!-- use this on items that are on sale
<h3><span class="label label-primary" width="auto"> Items on Sale </span></h3>
-->
<!-- On Sale columns -->
<h2 class="sectionHeader"> Shoes on Sale Below </h2>
<div class="row">
<div class="col-lg-4">
<h2>Heading</h2>
<p>Description</p>
<p><a class="btn btn-primary" href="#" role="button">Add to cart amp;raquo;</a></p>
<p><span class="label label-primary" width="auto">Sale! </span> </p>
</div>
</div>
</br>
<hr>
</br>
<!-- Regular Item columns -->
<h2 class="sectionHeader"> Entire Shoe Catalog </h2>
<div class="row">
<div class="col-lg-4">
<h2>Heading</h2>
<p>Description</p>
<p><a class="btn btn-primary" href="#" role="button">Add to cart amp;raquo;</a></p>
</div>
</div>
<!-- Site footer -->
</br>
<hr>
<footer class="footer">
<p>amp;copy; Brianna Jones XD</p>
</footer>
</div> <!-- /container -->
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
</body>
</html>
Мой mainPhp.php файл:
<?php
function PageName() {
return substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/") 1);
}
$current_page = PageName();
function Navigation(){
//can not get the page to stay active
$current_page = PageName();
echo ('
<div class="container">
<div class= "masthead">
<nav>
<h1 class="text-muted">Shoe Site</h2>
<ul class="nav nav-justified">
<li class="$current_page == 'index.php' ? 'active':NULL"><a href="index.php">Home</a></li>
<li class="$current_page == 'cart.php' ? 'active':NULL"><a href="cart.php">Cart</a></li>
<li class="$current_page == 'admin.php' ? 'active':NULL"><a href="admin.php">Admin</a></li>
</ul>
</nav>
</div>
');
}
?>
Комментарии:
1. Я думаю, что ответ @mi6crazyheart примерно правильный. Но просто любопытно, почему вы назначаете $current_page дважды, извне и внутри Navigation();
2. Ах, это была ошибка, я пробовал разные вещи перед публикацией и, должно быть, пропустил это, когда возвращался назад.
Ответ №1:
Попробуйте этот фрагмент кода для вашего mainPhp.php
файла
<?php
function PageName() {
return substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/") 1);
}
$current_page = PageName();
function Navigation(){
//can not get the page to stay active
$current_page = PageName();
echo '<div class="container">';
echo '<div class= "masthead">';
echo '<nav>';
echo '<h1 class="text-muted">Shoe Site</h2>';
echo '<ul class="nav nav-justified">';
$btnActiveClass = ($current_page=='index.php') ? 'active' : 'NULL';
echo '<li class="'.$btnActiveClass.'"><a href="index.php">Home</a></li>';
$btnActiveClass = ($current_page=='cart.php') ? 'active' : 'NULL';
echo '<li class="'.$btnActiveClass.'"><a href="index.php">Cart</a></li>';
$btnActiveClass = ($current_page=='admin.php') ? 'active' : 'NULL';
echo '<li class="'.$btnActiveClass.'"><a href="index.php">Admin</a></li>';
echo '</ul>';
echo '</nav>';
echo '</div>';
echo '</div>';
}
?>
Комментарии:
1. Отсутствует точка с запятой в » echo ‘</ ul>’ » и последнем «echo ‘ </ div>'» . Другие части должны работать.
2. Спасибо, что, похоже, это исправлено.