j'ai trouvé...
J'invente une classe pageActive, qui au contraire de active n'est pas temporaire.
Pour celà, j'utilise la variable serveur $_SERVER['REQUEST_URI'] qui me donne une indication sur la page courante.
Je compare cette variable avec le chemin attendu (le chemin visible dans ma barre d'adresse une fois que j'ai cliqué sur le lien), et selon si ça correspond ou pas je fais en sorte que mon lien soit de la classe pageActive (ou pas).
(L'avantage c'est que le lien gardera sa classe pageActive une fois arrivé sur la nouvelle page, contrairement à la classe "active" qui "s'évanouit" dès qu'on a changé de page).
concrètement:
J'ai une page "page-test" dont l'url complète est www.monsite.com/cmsms/index.php?page=page-test
La variable $_SERVER['REQUEST_URI'] me renvoie: /cmsms/index.php?page=page-test
(pour info, on peut savoir précisément ce que renvoie la variable $_SERVER['REQUEST_URI'] en l'affichant de la sorte:
<?php echo "$_SERVER['REQUEST_URI']"; ?>
)
Sachant celà, je teste si je suis sur la page "page-test", et selon quoi je fais en sorte de définir si la page est active ou non:
Par exemple, au lieu de mettre:
<div id="menuPrincipal">
<ul>
<li><a href="http://www.monsite.com/cmsms/index.php?page=page-test">Page test</a>';</li>
<li><a href="http://www.monsite.com/cmsms/index.php?page=plan-du-site">Plan du site</a></li>
</ul>
</div>
,je mets:
<div id="menuPrincipal">
<ul>
<li><?php
if ( $_SERVER['REQUEST_URI']=="/cmsms/index.php?page=page-test" )
{ echo '<a class="pageActive" href="http://www.monsite.com/cmsms/index.php?page=page-test">Page test</a>'; }
else
{ echo '<a href="http://www.monsite.com/cmsms/index.php?page=page-test">Page test</a>'; }
</li>
{*Idem pour les autres liens: *}
<li><?php
if ( $_SERVER['REQUEST_URI']=="/cmsms/index.php?page=plan-du-site" )
{ echo '<a class="pageActive" href="http://www.monsite.com/cmsms/index.php?page=plan-du-site">Plan du site</a>'; }
else
{ echo '<a href="http://www.monsite.com/cmsms/index.php?page=plan-du-site">Plan du site</a>'; }
</li>
</ul>
</div>
dans mon fichier css, j'avais:
#menuPrincipal a:active { background-image: url(images/menuPrincipalOver.gif); background-repeat:no-repeat; background-position:top center; color:#fff;}
et j'ai rajouté:
#menuPrincipal a.pageActive { background-image: url(images/menuPrincipalOver.gif); background-repeat:no-repeat; background-position:top center; color:#fff;}
Message édité par xolth le 04-12-2007 à 01:40:14