PHP & HTML 3
Insertion du menu dans le footer
Solution Benjimage
Création d’un fichier inc/menu.php et implémentation d’une fonction display_menu ():
<?php
function nav_item (string $lien, string $titre)
{
$classe = 'nav-item';
if ($_SERVER['SCRIPT_NAME'] === $lien) {
$classe .= ' active';
}
return <<<HTML
<li class="$classe">
<a class="nav-link" href="$lien"> $titre </a>
</li>
HTML;
}
function display_menu () {
$nav_menu = [nav_item('/index.php','Accueil'),nav_item( '/contact.php','Contact') ];
foreach ($nav_menu as $menu_item) {
echo $menu_item;
}
}
Appel du fichier dans header.php:
<?php
require 'inc/menu.php'; //<= appel du fichier
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
/* ... */
Appel de la fonction display_menu()dans la balise navde header.php:
<nav class="navbar navbar-expand-md navbar-dark bg-dark mb-4">
<a class="navbar-brand" href="#">Mon site</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarsExampleDefault">
<ul class="navbar-nav mr-auto">
<?php display_menu()?>
</ul>
</div>
</nav>
Appel de la fonction display_menu()dans la balise ulde footer.php:
<ul class=" navbar-nav mr-auto">
<?php display_menu()?>
</ul>
Solution Grafikart
Création d’un fichier functions.php et implémentation d’une fonction nav_menu () :
<?php
function nav_item (string $lien, string $titre, string $linkClass)
{
$classe = 'nav-item';
if ($_SERVER['SCRIPT_NAME'] === $lien) {
$classe .= ' active';
}
return <<<HTML
<li class="$classe">
<a class="$linkClass" href="$lien"> $titre </a>
</li>
HTML;
}
function nav_menu (string $linkClass = '') {
return
nav_item('/index.php','Accueil', $linkClass) .
nav_item( '/contact.php','Contact', $linkClass);
}
Appel du fichier functions.phpdans header.phpavecrequire_oncepour éviter les bugs de redéclaration :
<?php
require_once 'functions.php';
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
/* ... */
Appel de la fonction nav_menu()dans la balise navde header.php:
<nav class="navbar navbar-expand-md navbar-dark bg-dark mb-4">
<a class="navbar-brand" href="#">Mon site</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarsExampleDefault">
<ul class="navbar-nav mr-auto">
<?= nav_menu('nav-link') ?> // <= appel avec la syntaxe <?= pour echo
</ul>
</div>
</nav>
Appel de la fonction nav_menu()dans la balise ulde footer.php:
<ul class="list-unstyled text-small ">
<?= nav_menu()?> // <= appel avec la syntaxe <?= pour echo
</ul>