Bonjour à tous.
Voilà mon problème qui n’en est pas vraiment un car tous fonctionne correctement.
Il se trouve que mon menu est un ensemble d’include appelé par une fonction.
Le menu est donc appelé au chargement de la page par :
Code :
1 2 3 4 5
| <?php
require_once("./incl.menu.php");
$menu = affiche_menu();
?> |
disponible sur chacune de mes pages.
incl.menu.php contient le code suivant qui permet de gérer l’onglet actif de cette partie du menu.
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| <?php
function affiche_menu()
{
// tableaux contenant les liens d'accès et le texte à afficher
$tab_menu_lien = array( "home.php", "services.php", "account.php", "news.php", "#", "#" );
$tab_menu_texte = array( "Home", "Services", "Account", "News", "Contact", "How to" );
// informations sur la page
$info = pathinfo($_SERVER['PHP_SELF']);
$menu = "\n<div id=\"menu\">\n <ul class=\"onglets\">\n";
// boucle qui parcours les deux tableaux
foreach($tab_menu_lien as $cle=>$lien)
{
$menu .= " <li";
// si le nom du fichier correspond à celui pointé par l'indice, alors on l'active
if( $info['basename'] == $lien )
$menu .= " class=\"active\"";
$menu .= "><a href=\"" . $lien . "\">" . $tab_menu_texte[$cle] . "</a></li>\n";
}
$menu .= "</ul>\n</div>";
// on renvoie le code xHTML
return $menu;
}
?> |
L’autre partie du menu est celle qui m’embête car j’ai tendance à penser que, bien que fonctionnant correctement, c’est un joyeux bordel et que cela pourrait être simplifié.
Dans mon header j’ai l’appel suivant :
Code :
<?php include("incl.topmenu.php"); ?>
incl.topmenu.php contient le code suivant qui permet de gérer la deuxieme partie du menu qui depend du statut du visiteur ; si connecté à son compte ou non.
Code :
1 2 3 4 5 6 7 8
| <?php
if (isset($_SESSION['id']) && !empty($_SESSION["id"])) {
include ('incl.user_connected.php');
}
else {
include ('incl.userbar.php');
}
?> |
Ici le code de incl.userbar.php actif si le user n’est pas connecté :
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <div id="topmenu">
<ul class="userbar">
<li>
<?php
echo $menu;
?>
</li>
</ul>
<ul class="userbarlog">
<li>
<a class="panelLink panelOpener" id="slide_panellogin_opener" href="#login_popup">Login</a>
<!-- <a class="panelLink" href="#login_popup" style="background:url('png/encoche_nav.png') no-repeat right center; padding-right:25px;">Login</a> -->
</li>
<li>
<a href="register.php">Register</a>
</li>
<li>
<a class="panelSearch panelOpener" id="slide_panelsearch_opener" href="#mainsearch">Search</a>
<!-- <a class="panelSearch" href="#mainsearch" style="background:url('png/encoche_nav.png') no-repeat left center; padding-right:25px;">Search</a> -->
</li>
</ul>
</div> |
Ici le code de incl.user_connected.php actif si le user est connecté :
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <div id="topmenu">
<ul class="userbar">
<li>
<?php
echo $menu;
?>
</li>
</ul>
<ul class="userbarlog">
<li>
<a href="deconnexion.php">Logout</a>
</li>
<li>
<a class="panelAccount panelOpener" id="slide_panelaccount_opener" href="#account_popup" style="background:url('png/encoche_nav.png') no-repeat right center; padding-right:25px; ">Welcome <?php echo stripslashes(htmlentities(trim($_SESSION['username']))); ?></a>
<!-- <a class="panelAccount" href="#account_popup" style="background:url('png/encoche_nav.png') no-repeat right center; padding-right:25px; ">Welcome <?php echo stripslashes(htmlentities(trim($_SESSION['username']))); ?></a> -->
</li>
<li>
<a class="panelSearch panelOpener" id="slide_panelsearch_opener" href="#mainsearch" style="background:url('png/encoche_nav.png') no-repeat left center; padding-right:25px;">Search</a>
<!-- <a class="panelSearch" href="#mainsearch" style="background:url('png/encoche_nav.png') no-repeat left center; padding:0 25px 0 20px; ">Search</a> -->
</li>
</ul>
</div> |
Ma question est toute simple

. Est-il possible de simplifier ce code ou de le rendre plus propre ?
Merci à ceux qui prendront le temps de me répondre.