Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
510 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Menu externe avec fonction include et class:active

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Menu externe avec fonction include et class:active

n°2257155
seseba
Posté le 01-05-2015 à 22:16:43  profilanswer
 

Bonjour,
 
mon titre n'étant pas très clair je vais l'expliquer:
 
J'ai un site dans lequel j'ai extériorisé mon header via php et une fonction include.
 
Le problème c'est que dans mon menu j'ai une class:active qui permet de colorer le point du menu de la page sur laquelle on est, comme sur startseite ici:
http://testwebsite.physio-in-esslingen.de/index
 
ET maintenant que j'ai extériorisé mon header celui-ci est le même pour chaque page et du coup le point de menu actif est toujours le même.
 
Est ce que je peux régler ca pour que la class active se change tout en gardant mon header externe?
 
Merci

mood
Publicité
Posté le 01-05-2015 à 22:16:43  profilanswer
 

n°2257173
chrispc
Hacker de Kinder
Posté le 02-05-2015 à 01:05:01  profilanswer
 

Je pense qu'en PHP c'est pas possible. Vu que tu appelles le même code sur toutes tes pages.  
 
Après peut être qu'avec des conditions ça peut se faire mais j'ai pas l'idée en tête.  
 
Renseigne toi plutôt du côté du JavaScript, ça pourrait être possible.
Bon je ne t'ai pas forcément beaucoup aidé mais si j'ai pu te donner une piste...


---------------
Topic écologie : https://forum.hardware.fr/hfr/Discu [...] 7412_1.htm
n°2257186
seseba
Posté le 02-05-2015 à 07:28:07  profilanswer
 

Merci,
je vais voir ca.

n°2257230
scvo0ne
Posté le 03-05-2015 à 02:20:18  profilanswer
 

Bien évidemment que c'est faisable en PHP
 
Dans ton header il suffit de detecter sur quelle page tu es. Soit tu regardes pour utiliser  $_SERVER ( REQUEST_URI ou PHP_SELF par ex), soit tu mets une variable genre $page avant d'appeler ton menu
 

n°2257234
seseba
Posté le 03-05-2015 à 08:45:34  profilanswer
 

Et comment j'ajoute cette fonction dans mon menu?
Pour l'instant je n'ai le class:active que sur la class qui doit être active...
 
Voici mon menu:

Code :
  1. <div class="span7 navigation">
  2.             <div class="navbar hidden-phone">
  3.            
  4.             <ul class="nav">
  5.             <li><a href="./index">Startseite </a></li>
  6.            <li><a href="./ueber-uns">Über Uns</a></li>
  7.             <li class="dropdown">
  8.                <a class="dropdown-toggle" data-toggle="dropdown" onclick="self.location.href='./leistungen'" style="cursor: pointer;">Leistungen<b class="caret"></b></a>
  9.                 <ul class="dropdown-menu">
  10.                     <li><a href="./leistungen/krankengymnastik">Krankengymnastik</a></li>
  11.                     <li><a href="./leistungen/manuelle-therapie">Manuelle Therapie</a></li>
  12.                     <li><a href="./leistungen/bobath">Therapie nach Bobath</a></li>
  13.                     <li><a href="./leistungen/manuelle-lymphdrainage">Manuelle Lymphdrainage</a></li>
  14.     <li><a href="./leistungen/sportphysiotherapie">Sportphysiotherapie</a></li>
  15.                     <li><a href="./leistungen/massage">Massage</a></li>
  16.                     <li><a href="./leistungen/wellness">Wellness</a></li>
  17.                     <li><a href="./leistungen/hausbesuche">Hausbesuche</a></li>
  18.                 </ul>
  19.             </li>
  20.              <li><a href="./unsere-praxis">Unsere Praxis </a></li>
  21.              <li class="dropdown">
  22.                 <a class="dropdown-toggle" data-toggle="dropdown" onclick="self.location.href='./unser-team'" style="cursor: pointer;">Unser Team <b class="caret"></b></a>
  23.                 <ul class="dropdown-menu">
  24.                     <li><a href="./unser-team/sebastien-fournereau">Sébastien Fournereau</a></li>
  25.                     <li><a href="./unser-team/fikreta-crnkic">Fikreta Crnkic'</a></li>
  26.                 </ul>
  27.              </li>
  28.              <li class="active"><a href="./kontakt">Kontakt</a></li>
  29.             </ul>
  30.          
  31.             </div>

n°2257318
seseba
Posté le 04-05-2015 à 17:46:44  profilanswer
 

Merci, j ai essayé mais pas tout réussi...
 
Voila c que j ai fait:

Code :
  1. <div class="span7 navigation">
  2.             <div class="navbar hidden-phone">
  3.            
  4.             <ul class="nav">
  5.             <li <?php if (preg_match("#./index#", $_SERVER['REQUEST_URI']) ) { echo ("class=\"active\"" ); } ?> ><a href="./index">Startseite </a></li>
  6.            <li <?php if (preg_match("#./ueber-uns#", $_SERVER['REQUEST_URI']) ) { echo ("class=\"active\"" ); } ?> ><a href="./ueber-uns">Über Uns</a></li>
  7.             <li <?php if (preg_match("#./leistungen#", $_SERVER['REQUEST_URI']) ) { echo ("class=\"active\"" ); } ?> class="dropdown">
  8.                <a class="dropdown-toggle" data-toggle="dropdown" onclick="self.location.href='./leistungen'" style="cursor: pointer;">Leistungen<b class="caret"></b></a>
  9.                 <ul class="dropdown-menu">
  10.                     <li><a href="./leistungen/krankengymnastik">Krankengymnastik</a></li>
  11.                     <li><a href="./leistungen/manuelle-therapie">Manuelle Therapie</a></li>
  12.                     <li><a href="./leistungen/bobath">Therapie nach Bobath</a></li>
  13.                     <li><a href="./leistungen/manuelle-lymphdrainage">Manuelle Lymphdrainage</a></li>
  14.     <li><a href="./leistungen/sportphysiotherapie">Sportphysiotherapie</a></li>
  15.                     <li><a href="./leistungen/massage">Massage</a></li>
  16.                     <li><a href="./leistungen/wellness">Wellness</a></li>
  17.                     <li><a href="./leistungen/hausbesuche">Hausbesuche</a></li>
  18.                 </ul>
  19.             </li>
  20.              <li <?php if (preg_match("#./unsere-praxis#", $_SERVER['REQUEST_URI']) ) { echo ("class=\"active\"" ); } ?> ><a href="./unsere-praxis">Unsere Praxis </a></li>
  21.              <li class="dropdown" <?php if (preg_match("#./unser-team#", $_SERVER['REQUEST_URI']) ) { echo ("class=\"active\"" ); } ?> >
  22.                 <a class="dropdown-toggle" data-toggle="dropdown" onclick="self.location.href='./unser-team'" style="cursor: pointer;">Unser Team <b class="caret"></b></a>
  23.                 <ul class="dropdown-menu">
  24.                     <li <?php if (preg_match("#./unser-team/sebastien-fournereau#", $_SERVER['REQUEST_URI']) ) { echo ("class=\"active\"" ); } ?> ><a href="./unser-team/sebastien-fournereau">Sébastien Fournereau</a></li>
  25.                     <li><a href="./unser-team/fikreta-crnkic">Fikreta Crnkic'</a></li>
  26.                 </ul>
  27.              </li>
  28.              <li <?php if (preg_match("#./kontakt#", $_SERVER['REQUEST_URI']) ) { echo ("class=\"active\"" ); } ?> ><a href="./kontakt">Kontakt</a></li>
  29.             </ul>
  30.          
  31.             </div>


 
Le problème c'est que ca fonctionne dans la partie unser-team mais pas dans leistungen.
Et je ne sais pas comment faire pour que la class active aille sur unser-team quand on clique sur sebastien-fournereau et non sur sebastien-fournereau

n°2257384
mechkurt
Posté le 05-05-2015 à 10:59:59  profilanswer
 

Fait un echo $_SERVER['REQUEST_URI']; et tu comprendras tout de suite pourquoi ton pregmatch ne fonctionne pas...
 
Et utiliser des regex pour détecter un début d'url c'est overkill, tu peux faire :
if (substr($_SERVER['REQUEST_URI'],0,7) == 'kontakt') { ce sera nettement plus léger pour le serveur...


---------------
D3
n°2257401
seseba
Posté le 05-05-2015 à 16:00:29  profilanswer
 

Je ne comprends pas...
 
Est ce que je dois ecrire ca?

Code :
  1. <li <?php if (substr($_SERVER['REQUEST_URI'],0,7) == 'index') { echo $_SERVER['REQUEST_URI'];("class=\"active\"" ); } ?> ><a href="./index">Startseite </a></li>

n°2257409
mechkurt
Posté le 05-05-2015 à 17:08:30  profilanswer
 

index n'ayant que 5 lettres, ça ne vas pas le faire, quand a ce qu'il y'a entre les brackets, je ne veux même pas chercher à comprendre comment tu as pu penser que je voulais te faire écrire ça...
 
Le echo request_uri c'était pour que tu vois que ça ne commencera jamais par ./, par / à la rigueur (me souvient plus) et dans ce cas faudra modifier le substr($url, 1, $longueur_de_ma_chaine) pour ignorer le /.
 
Sur ce forum on veut bien donner des conseils, mais on ne donnes que rarement de solution toute faite et complète (le plus souvent par manque de temps), donc on attend au minimum que les gens cherchent par eux même ( http://php.net/manual/fr/function.substr.php ), c'est comme ça qu'on progresse !
 


---------------
D3
n°2257422
seseba
Posté le 05-05-2015 à 21:44:14  profilanswer
 

Ok alors j'ai mis mon header.inc.php dans le dossier leistungen et du coup ca fonctionne pour leistungen mais je ne comprends donc pas pourquoi ca fonctionne pour unser-team alors que ce dernier est aussi dans un sous-dossier dans lequel je n'ai pas mis le header.inc.php.
 
Pour le reste j ai essayer ca:
<li <?php if (substr($_SERVER['REQUEST_URI'],0,-1) == 'index') { echo ("class=\"active\"" ); } ?> ><a href="./index">Startseite </a></li>
 
et ca:
<li <?php if (substr($_SERVER['REQUEST_URI'],0,5) == 'index') { echo ("class=\"active\"" ); } ?> ><a href="./index">Startseite </a></li>
ou encore ca:
<li <?php if (substr($_SERVER['REQUEST_URI'],0,-1) == '/index') { echo ("class=\"active\"" ); } ?> ><a href="./index">Startseite </a></li>
et ca:
<li <?php if (substr($_SERVER['REQUEST_URI'],0,6) == '/index') { echo ("class=\"active\"" ); } ?> ><a href="./index">Startseite </a></li>
 
Mais ca ne donne rien...

mood
Publicité
Posté le 05-05-2015 à 21:44:14  profilanswer
 

n°2257439
mechkurt
Posté le 06-05-2015 à 09:09:05  profilanswer
 

affiche quelque part dans ta page $_SERVER['REQUEST_URI'], ça t'aidera a comprendre ton erreur, si tu est dans un sous dossier, REQUEST_URI ne commence sans doute pas par index, dans ce cas la fonction http://php.net/manual/fr/function.pathinfo.php pourra sans doute t'aider...


---------------
D3
n°2257506
seseba
Posté le 06-05-2015 à 18:11:41  profilanswer
 

ok j ai corrigé mon erreur mais je n'arrive pas a me debrouiller avec le request_uri ma class ne passe pas en active...

n°2257507
seseba
Posté le 06-05-2015 à 18:32:24  profilanswer
 

j ai une structure comme suit:
C:\xampp\htdocs\site2\index.php
et  
C:\xampp\htdocs\site2\leistungen\index.php

n°2257542
mechkurt
Posté le 07-05-2015 à 09:23:42  profilanswer
 

Jamais 2 sans 3, si tu veux utiliser $_SERVER['REQUEST_URI'] pour identifier sur quel page tu te trouves et afficher une classe :
commence par afficher ce que contient $_SERVER['REQUEST_URI'] (en allant sur plusieurs pages différentes bien sur)
Une fois ceci fait tu comprendras ce que contient cette variable, et tu adapteras ton code en conséquence...
 
D'ailleurs pour mieux faire tu devrais utiliser une fonction :

Code :
  1. function IsActive($page) {
  2.   if ($page == substr($_SERVER['REQUEST_URI'],0,-1)) {
  3.     return ' class="active"';
  4.   }
  5. }
  6. <li<?php echo IsActive('/site2/unser-team/sebastien-fournereau'); ?>><a href="./unser-team/sebastien-fournereau">Sébastien Fournereau</a></li>


---------------
D3
n°2257662
seseba
Posté le 07-05-2015 à 21:21:25  profilanswer
 

Comment est ce que j affiche $_SERVER['REQUEST_URI'], je l avais reussi mais j'ai oublié :??:

n°2257787
scvo0ne
Posté le 10-05-2015 à 16:25:13  profilanswer
 

Code :
  1. echo  $_SERVER['REQUEST_URI'];


n°2259103
seseba
Posté le 29-05-2015 à 20:16:06  profilanswer
 

Code :
  1. <ul class="nav">
  2.              <?php echo '<li'.(substr($_SERVER['REQUEST_URI']) == '/index.php' ?  ' class="active"' : null).'><a href="./index.php">Startseite</a></li>'; ?>
  3.              <?php echo '<li'.(substr($_SERVER['REQUEST_URI']) == 'testwebsite.physio-in-esslingen.de/ueber-uns' ?  ' class="active"' : null).'><a href="./ueber-uns.php">Über uns</a></li>'; ?>
  4.                <a class="dropdown-toggle" data-toggle="dropdown" onclick="self.location.href='./leistungen'" style="cursor: pointer;"><?php echo '<li class="dropdown"'.(substr($_SERVER['REQUEST_URI']) == 'testwebsite.physio-in-esslingen.de/leistungen' ?  ' class="active"' : null).'><a href="./leistungen.php">Leistungen</a></li>'; ?><b class="caret"></b></a>
  5.                 <ul class="dropdown-menu">
  6.                     <li><a href="./leistungen/krankengymnastik">Krankengymnastik</a></li>
  7.                     <li><a href="./leistungen/manuelle-therapie">Manuelle Therapie</a></li>
  8.                     <li><a href="./leistungen/bobath">Therapie nach Bobath</a></li>
  9.                     <li><a href="./leistungen/manuelle-lymphdrainage">Manuelle Lymphdrainage</a></li>
  10.                     <li><a href="./leistungen/sportphysiotherapie">Sportphysiotherapie</a></li>
  11.                     <li><a href="./leistungen/massage">Massage</a></li>
  12.                     <li><a href="./leistungen/wellness">Wellness</a></li>
  13.                     <li><a href="./leistungen/hausbesuche">Hausbesuche</a></li>
  14.                 </ul>
  15.             </li>
  16.              <?php echo '<li'.(substr($_SERVER['REQUEST_URI']) == 'testwebsite.physio-in-esslingen.de/unsere-praxis' ?  ' class="active"' : null).'><a href="./unsere-praxis.php">Unsere Praxis</a></li>'; ?>
  17.              <li class="dropdown" <?php if (preg_match("#./unser-team#", $_SERVER['REQUEST_URI']) ) { echo ("class=\"active\"" ); } ?> >
  18.                 <a class="dropdown-toggle" data-toggle="dropdown" onclick="self.location.href='./unser-team'" style="cursor: pointer;">Unser Team <b class="caret"></b></a>
  19.                 <ul class="dropdown-menu">


 
Voila ou j en suis mais ca ne fonctionne pas...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Menu externe avec fonction include et class:active

 

Sujets relatifs
Declaration d'active X sous visual basic 6[JAVA] Injection SPRING d'une inner class dans un EJB.
Cliquer sur un menu déroulant + affichage instantanéoptimisation
HashSet et classExcel : passer un range "complexe" à une fonction
declaration de class imcomprehensible [résolu]Incrementer en fonction de l'année
Charger dynamiquement une fonction avec greasmonkeyBarre de menu : retour à la ligne
Plus de sujets relatifs à : Menu externe avec fonction include et class:active


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR