8791 sujets

Développement web côté serveur, CMS

Salut,

Je rencontre un petit stress de simplification dans la factorisation de mon menu:

à la base c'est:

<ul>
    <li class="menu"><a href="home.php" class="">Home</a></li>
    <li class=""><a href="articles.php" class="">Articles</a></li>
    <li class=""><a href="livres.php" class="">Livres</a></li>
    <li class=""><a href="fiches.php" class="">Fiches</a></li>
    <li class=""><a href="agenda.php" class="">Agenda</a></li>
    <li class=""><a href="liens.php" class="">Liens</a></li>
    <li class=""><a href="contact.php" class="">Contact</a></li>
</ul>


Que je factorise comme ceci:

  <?php
// Création d'un vecteur de lien contenant les liens hypertextes du menu
$items = array(
         array("link"=>"home.php", "label"=>"Home"),
         array("link"=>"articles.php", "label"=>"Articles"),
	array("link"=>"livres.php", "label"=>"Livres"),
         array("link"=>"fiches.php", "label"=>"Fiches"),
         array("link"=>"agenda.php", "label"=>"Agenda"),
	array("link"=>"liens.php", "label"=>"Liens"),
	array("link"=>"contact.php", "label"=>"Contact"));
$menu = '';

// Boucle de création de la liste <ul><li>
foreach ($items as $val) {
    $menu .= '<li><a href="'.$val['link'].'"';
    // Vérification si la page X est la page en cours
    // Si oui ajouter la classe « active » à l'élément de la liste
    if ($_SERVER['SCRIPT_NAME'] == $val['link'])
    $menu .= ' class="active"';
    $menu .= '>'.$val['label'].'</a></li>';
}

echo $menu; 

?> 


Mon problème, c'est que cette factorisation ne prend pas en compte le fait que mon premier <li> a la class "menu"...

Je cherche donc une manière d'intégrer cela... sans succès depuis depuis ce matin... Smiley sweatdrop

Une idée?
Modifié par FranZz (26 Mar 2010 - 11:29)
En ajoutant une nouvelle clé dans le tableau ?



  <?php
// Création d'un vecteur de lien contenant les liens hypertextes du menu
$items = array(
         array("link"=>"home.php", "label"=>"Home","class"=>"menu"),
         array("link"=>"articles.php", "label"=>"Articles"),
	array("link"=>"livres.php", "label"=>"Livres"),
         array("link"=>"fiches.php", "label"=>"Fiches"),
         array("link"=>"agenda.php", "label"=>"Agenda"),
	array("link"=>"liens.php", "label"=>"Liens"),
	array("link"=>"contact.php", "label"=>"Contact"));
$menu = '';

// Boucle de création de la liste <ul><li>
foreach ($items as $val) {
    $menu .= '<li';
    if (isset($val['class']))
       $menu .= ' class="'.$val['class'].'"';
    $menu .= '><a href="'.$val['link'].'"';
    // Vérification si la page X est la page en cours
    // Si oui ajouter la classe « active » à l'élément de la liste
    if ($_SERVER['SCRIPT_NAME'] == $val['link'])
        $menu .= ' class="active"';
    $menu .= '>'.$val['label'].'</a></li>';
}

echo $menu; 

?> 

Modifié par Dsls (26 Mar 2010 - 11:01)