Bonjour,

Il me semble que c'est mieux perçu par google (entre autre) que le title et le meta description (qui se trouvent dans le header) soient différent sur chaque page. Hors ce n'est pas mon cas et je ne comprends pas comment mettre ça en place.

Je pense que je devrai utiliser le PHP mais je ne sais pas quoi faire/dire...

Voici mon index.php pour mieux comprendre ma structure :

<!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" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>title à remplir</title>
<meta name="keywords" content="à remplir" />
<meta name="description" content="à remplir" />

</head>
<body>
<div id="page">

     <div id="header">
        <?php include('inc/header.php');?>
     </div> 

      <div id="menu">
      <?php include('inc/menu.php');?>
     </div>

                  <div id="contenu">

                      <?php $pagesAutorisees = array('accueil', 'portfolio', 'creation-photoshop', 'creation-flash', 'contact', 'montage-photos', 'actualites', 'objectifs', 'deo-nature', 'ecole-alternance', 'cine-inscription', 'shakira', 'cine-etudiant', 'vendre-maison');

                     if (!empty($_GET"contenu"]) && in_array($_GET"contenu"], $pagesAutorisees)) include('pages/'. $_GET'contenu'].'.php');
                     else include ('pages/accueil.php');?>
                  </div>       

 <div id="footer">
      <?php include('inc/footer.php');?>
  </div>  
</div>

</body>
</html>

Je crois que pour le meta keyword, il n'y a pas besoin de changer en fonction des pages, si?

Merci de me guider...

Bonne journée

PS: Bonne idée ce forum

7 réponses


PhiSyX
Réponse acceptée

Hello, utilise isset() ;)
Pense à mettre un else pour un titre par défaut. ^^

PhiSyX
Réponse acceptée

Le isset permet de savoir si une ou plusieurs $variables sont chargé. (Prend en paramètres les variables (ex: isset($_GET'lol'],$mdr,$huhu,$pwet) ))

if(isset($_GET'contenu']) && in_array($_GET'contenu'], $pagesAutorisees)){ // c'est ma ligne 25
    echo '<title>'.$tab$_GET'contenu']]'title'].'</title>';
    echo '<meta name="description" content="'.$tab$_GET'contenu']]'description'].'" />';
} else {
    // Title par défaut, n'oublie pas les écho :p
}

Ce que tu peux faire, c'est créer un tableau avec les différents textes que tu souhaites pour tes meta et ton title comme ceci.

Tout d'abord, mets ton tableau $pagesAutorisees avant le Doctype.
Ensuite, construis un tableau de cette forme :

<?php
    $tab = array(
        "accueil" => array(
            "title" => "Bienvenue sur mon site !",
            "description" => "Description de la page d'accueil du site"
        ),
        "portfolio" => array(
            "title" => "Voici mon portfolio",
            "description" => "Description de la page de ton portfolio"
        )
    );
?>

À compléter avec les différentes pages que tu as, en gardant la même forme.

T'as plus qu'à faire un test dans le head au niveau comme ça :

<?php
    if(in_array($_GET'contenu'], $pagesAutorisees)){
        echo '<title>'.$tab$_GET'contenu']]'title'].'</title>';
        echo '<meta name="description" content="'.$tab$_GET'contenu']]'description'].'" />';
    }
?>

Après, y'a peut être mieux à faire, mais ça devrait marcher.

disney
Auteur

Bonjour,

Merci, ça marche presque il y a un petit soucis.

Quand je navigue sur mes pages, le title et description changent. Mais quand j'arrive sur mon site la première fois j'ai un message d'erreur qui s'affiche tout en haut de mon site :

Notice: Undefined index: contenu in D:\wamp\www\portfolio\index.php on line 25, et à cette endroit il y a :

<?php
    if(in_array($_GET'contenu'], $pagesAutorisees)){ // c'est ma ligne 25
        echo '<title>'.$tab$_GET'contenu']]'title'].'</title>';
        echo '<meta name="description" content="'.$tab$_GET'contenu']]'description'].'" />';
    }
?>

Merci beaucoup pour ton aide...

disney
Auteur

Hi!

Tu peux m'expliquer comment utiliser isset()? J'ai regardé sur le net mais avec mon bout de code je vois pas comment faire...

Pour le else, j'avais pensé à faire :

else{
     '<title> titre par defaut</title><br/>
      <meta name="description" content="description par defaut"';
}

Mais il ne se passe rien, peux-tu me guider?

Merci beaucoup pour ton aide!

Bonne soirée

disney
Auteur

Merci beaucoup! ça marche.

Effectivement si je ne mais pas de echo, je ne risque pas d'aller loin...

Bon week-end

Ah oui, effectivement, j'avais zappé le cas de l'inexistence de $_GET'contenu'] :p
Ravi d'avoir pu t'aider.