Pages :
Salut !!!

Stress:

Je viens de terminer un site.

Après une discussion ( bien entendu une fois que le site est terminé ), je dois être capable de modifier mon menu 2 ou 3 fois par mois...

Ce qui voudrait dire que je dois modifier toutes mes pages ( + ou -500 tous les 3 mois).

Je me suis donc dit que j'allais opter pour un menu en php à l'aide de la fonction include...( que je viens de découvrir via le tuto avec alsa dédié)

> Ma question vant de commencer, y aura t il un impact sur le temps de chargement de mes pages? Au niveau vitesse de chargement ? ce changement sera-til perceptible ?

Merci davance -

Pour une personne comme moi pour qui php évoque autant de choses que masque d'écrétage pour vous Smiley murf Smiley murf , est il possible de créer mon menu en php dans des délais assez courts? Je précise en passant que mes pages sont toutes faites, en xhtml, sont w3c valides, et graphiquement correspondent à ce que mon boss attend.

>merci pour l'éclairage ....
Modifié par FranZz (23 Apr 2008 - 11:55)
Yeppppppppp _>

Bah, ça marche !

Et puis c'est pas vraiment plus lent ... J'y arrive, c'est easy en fait .....

>Woop !
Sinon, une solution possible: si le code de ton menu est exactement le même dans tes 500 pages statiques, tu prends un éditeur de code qui marche bien et tu fais «Rechercher/remplacer» dans tous les fichiers à la fois. Smiley smile

Mais bon il ne devrait pas y avoir de problème pour utiliser PHP de la manière décrite par le tutoriel. Et tu peux utiliser le «rechercher/remplacer» une seule fois, pour remplacer <tout le code de mon menu> par <?php include('inc/menu.php'); ?> Smiley smile

Fais bien une copie de tes pages statiques avant de t'amuser à les modifier automatiquement, par contre. Smiley cligne
Ben, grave soullagé par PHP _>

Pour rechercher remplacer ok, mais vaut mieux que je commence à développer mes compétences en PHP, au moins pit à petit.

> Pour la sauvegardes, wais, vaut mieux pas rigoler avec ça! Smiley ravi Smiley murf Smiley langue

> ++
Le désavantage de la technique include, c'est que pour la navigation c'est pas top comme je l'ai fait.

Je m'explique.

Avant, avec mon menu copié collé sur toutes mes pages, j'appliquais une class spéciale à la page en cours. Cela indiquait à la personne sur mon site dans quelle "rubrique" elle se trouvait.

Avec le include, mon menu marche parfaitement, mais niveau navigation, pas moyen de mettre la class ( appropriée à la page en cours ) étant donné que ce menu est pareil pour toutes les pages...

Ou y'a encore une subtilité quelque part? Smiley langue

Smiley biggrin le lundi c'est trop la fête... Smiley lol
Modifié par FranZz (21 Apr 2008 - 14:49)
Dans chaque page tu définis une variable:
<?php $template_site_section = 'contact'; ?>

Et dans ton menu en PHP, tu testes pour chaque item du menu si cela correspond et tu écris la classe dans ce cas.
<ul id="navigation">
	<li<?php if($template_site_section == 'blabla'){echo ' class="current"';} ?>><a href="...">Bla bla</a></li>
	<li<?php if($template_site_section == 'contact'){echo ' class="current"';} ?>><a href="...">Contact</a></li>
</ul>


Mais pour autant de page il y a peut-être plus simple ou plus efficace?
Si quelqu'un a mieux en tête, ça m'intéresse.
Hello "Mister Stress" Smiley cligne

Je suis loin d'être un spécialiste de la question, mais il existe des solutions en php pour marquer le lien actif (la page en cours) :
Sur A List Apart par exemple ou ici , la question a certainement dû être débattue sur ce forum également Smiley cligne
Je suppose qu'il doit être possible de faire cohabiter l'include du menu et la détection de la page courrante, non ?!

Cdt,
Sylvain

Je suis lent, je suis lent, je suis lent... Smiley rolleyes
Modifié par 6l20 (21 Apr 2008 - 16:12)
Merci, c'est super complet, mais ptêtre un peu trop pour moi ...

Faut que je lise, parce qu'en php, c'est " KEDAL" pour moi !

Pas évident... mais pas impossible non plus...

Sympa pour l'aide à Mister stress Smiley cligne Smiley lol
6l20 a écrit :
Je suis lent, je suis lent, je suis lent... Smiley rolleyes

Oui ( Smiley lol ), mais ton deuxième lien répond à ma question sur comment faire plus efficace. Smiley smile
Modifié par Florent V. (21 Apr 2008 - 16:31)
En fait, si j'ai ceci à la base ( dans ma page .php externe ):

<ul>
	   <li><a href="http://baloo.com/accueil.php" >Accueil</a></li>
           <li><a href="http://baloo.com/liens.php" >liens</a></li>
        </ul>


Le site que tu renseignes propose ceci:
$items = array(
    array("link"=>"accueil.html", "label"=>"Accueil"),
    array("link"=>"faq.html", "label"=>"FAQ"));

$menu = '';


Donc,en résumé, je dois insérer les éléments comme ça?

$items = array(
    array("http://baloo.com/Accueil.php"="Accueil.php", "label"=>"Accueil"),
    array("http://baloo.com/Liens.php"="Liens.php", "label"=>"Liens"));

$menu = '';
Smiley sweatdrop Smiley sweatdrop
Modifié par FranZz (21 Apr 2008 - 18:26)
Et puis pour le


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

echo $menu;


Je dois juste remplacer http://www.pckult.net/ par l'url de mon site?

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

echo $menu;

Modifié par FranZz (21 Apr 2008 - 18:27)
Heu... utilise plutôt l'exemple que j'ai donné (ou celui de A List Apart, qui est sensiblement le même), si tu nages en PHP. Ou bien apprend les bases de PHP. Smiley cligne
Hop...


Tu veux donc un squelette de menu similaire dans toutes tes pages mais avec une class différente par page ?

- Dans ta feuille de style tu mets toutes les class différentes...

- Ensuite tu vas transmettre le nom de la classe dans le lien qui amènera dans la page...
Exemple :
un lien du type
<a href="page_en_bleu.php?essai=bleu" >


- Et tu inclus menu.php dans cette page :
menu.php
<?php 
$essai =  $_GET['essai']; //cette ligne récupère la variable dans l'adresse
?>

<div class="<?php echo $essai; ?>" > //on insère le nom de la class avec un echo 
ton menu 
</div>


Une fois le code php exécuté par le serveur ça donnera ce code :
<div class="bleu" >
ton menu
</div>


Smiley smile
Modifié par Velbain (21 Apr 2008 - 20:24)
upload/14508-00.jpg upload/14508-001.jpg

En fait, j'ai un menu très simple, . Lors du survol, les rubriques se soulignent de rouge et un mini triangle se place du coté gauche. Une fois que t'es sur la page "liens" ( ou sur une autre page ), la rubrique conserve ses attributs de survol.

Le fait de faire un include annule cela et mon .current ne fonctionne plus.

La brasse étant mon sport favori en php, c'est chaud.

Il ne s'agit pas d'une class différente par page, c'est à chaque fois la même, très simple... L'histoire des labels, je croyais capter, mais j'ai l'air à côté de la plaque...

tsss de pffff de MMm Smiley biggrin

Faut absolument que j'arrive au bout .... Je vais relire tt cela...
Modifié par FranZz (21 Apr 2008 - 21:14)
Hop hop hop !!!



j'ai envie de dire de tester un :
a.class2merde:active {color:red; ......}


File moi une page en ligne !!!


EDIT : non en fait le pseudo élément "active" est valable que lorsqu'on click dessus Smiley confus ... ça ne marche pas...
Modifié par Velbain (21 Apr 2008 - 21:47)
Yep ....


Voilà la page de test :
http://jeanluc.bainvel.club.fr/2WF/page1.php?categorie=liens

La page 1 (seul le contenu change dans la 2 et 3)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="essai.css">
<title>Document sans titre</title>
</head>

<body>
<?php include'menu.php' ; ?>
<br />
<br />
<br />
PAGE 1 : liens
</body>
</html>


Le menu.php
<?php $categorie =  $_GET['categorie']; ?>


<a href="page1.php?categorie=liens" class="<?php if ($categorie==liens) echo "page_active" ; ?>" >liens</a>

<br>
<br>

<a href="page2.php?categorie=news" class="<?php if ($categorie==news) echo "page_active" ; ?>">news</a>

<br>
<br>

<a href="page3.php?categorie=livres" class="<?php if ($categorie==livres) echo "page_active" ; ?>">livres</a>


Et la feuille de style
@charset "UTF-8";
/* CSS Document */
a {color:#000000; text-decoration:none;}
a.page_active {color:#FF0000; text-decoration:underline}



Pour essayer d'expliquer simplement le menu.php (parce que c'est là que tout se joue) :

Les liens vers chacune des trois pages contiennent une variable appelé categorie ...
En gros le 1er lien dit "vas à la page1 avec comme info : categorie=liens" ...

Ensuite la première ligne récupère la valeur de la variable categorie située dans le lien cité précédemment...
Et suivant la valeur de cette variable il va afficher le mot page_active dans l'attribut class=""

Pour le premier lien si categorie=liens on affiche class="page_active" et si c'est pas vrai on affiche rien...

Ce n'est ni plus ni moins que la méthode du lien de 6l20 mais en français Smiley ravi ...
Modifié par Velbain (21 Apr 2008 - 22:28)
Yep

Voilà l'url !!!


mais je vois que t'as fait un post !!!

Je mate cela
Modifié par FranZz (22 Apr 2008 - 00:01)
Hiyaaa



Ayé Smiley biggrin
<?php $cat =  $_GET['cat']; ?>

<li><a href="http://www.tonsite.com/home.htm?cat=accueil" class="<?php if ($cat==accueil) echo "current" ; ?>">Accueil</a></li>

<li></li>
<li></li>
<li><a href=""http://www.tonsite.com/liens.php?cat=lien" class="<?php if ($cat==lien) echo "current" ; ?>" >Liens</a></li>
<li><a href="http://www.tonsite.com/news.php?cat=news" class="<?php if ($cat==news) echo "current" ; ?>" >News</a></li>
<li><a href="http://www.tonsite.com/livres.php?cat=livre" class="<?php if ($cat==livre) echo "current" ; ?>" >Livres</a></li>
<li><a href="http://www.tonsite.com/contact.php?cat=contact" class="<?php if ($cat==contact) echo "current" ; ?>" >Contact</a></li>
<li><a href="http://www.tonsite.com/magazines.php?cat=mag" class="<?php if ($cat==mag) echo "current" ; ?>" >Magazines</a></li>
<li><a href="http://www.tonsite.com/le_corps_humain.htm">Le corps humain</a></li>

Modifié par Velbain (25 Apr 2008 - 21:55)
Hop _> Hop >

Je teste cela Demain au taff ( 07 h35 !!! ), parce que je n'ai pas les codes pour accéder au FTP >_

Je vais voir si je retrouve pas ça quelque part !!!

[ CENSURE ] Sympa koi [ CENSURE ] Smiley murf

( enfin, si ça fonctionne !!!!!!!!!!!!! ) ( faut vraiment que je saisisses comment ça marche, sinon, ça aura servi à quedalle°>>>
Modifié par FranZz (21 Apr 2008 - 23:03)
Pages :