Logo

Documentation

/home/vhsh1501/documentation.benjamin-bruant.com/wp-content/themes/zetheme/single.phpsingle

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>