[Création de titres et descriptions dynamiques]

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par AjaxGin, 2 Février 2011.

  1. AjaxGin
    AjaxGin Nouveau WRInaute
    Inscrit:
    2 Février 2011
    Messages:
    2
    J'aime reçus:
    0
    Bonjour à tous,

    N'étant pas forcément très calé en PhP, je me tourne vers la communauté de WRI pour m'éclairer sur le problème du titre dynamique.

    Je travaille donc sur un site où toutes les pages intègrent la même entête et pied de page, grâce à des fonctions "include". En gros chaque page est codée selon le modèle:

    Code:
    <?php
    
    include("haut_page.php");
    
    ?>
    
    [corps de la page...]
    
    
    <?php
    
    include("bas_page.php");
    
    ?>
    Le fichier haut_page.php contient donc le doctype, et les balises <title> et <meta description>.

    J'aimerais pouvoir installer un titre et une description différents sur toutes mes pages, sans avoir à éclater la structure actuelle du site. J'ai appris que cela était possible en utilisant un script (dans les balises concernées), relié à deux bases de données (une pour les titre et une pour les descriptions).

    Le soucis, c'est que je ne sais pas du tout comment m'y prendre. J'ai trouvé des tutos assez bien détaillés pour créer des bases de données sur EasyPhP, mais ce ne sont souvent que des aides pour le prendre en main...

    Si vous avez du temps pour m'expliquer la subtilité du système, ce serait vraiment sympathique! :)

    Merci d'avance ^^
     
  2. dolmenhir
    dolmenhir WRInaute discret
    Inscrit:
    23 Novembre 2009
    Messages:
    52
    J'aime reçus:
    0
    Bonjour,

    J'ai déjà fait ce type de manip pour quelques sites.
    Le principe est assez simple, encore faut-il avoir des bases suffisantes en php et bases de données.

    La démarche varie selon la structure éditoriale du site.
    Les pages sont-elles le reflet d'une rubrique (ou sous-rubrique) ? un condensé d'articles ? ou bien chaque page correspond à un seul article ?

    Globalement, l'idée est :
    1. de récupérer le titre de l'article ou de la rubrique depuis la base de données
    Code:
    $query = "SELECT * FROM `rubriques` WHERE `index` = ".$idrubrique; // $idrubrique = id de la rubrique dans la table rubriques (à adapter selon vos noms de tables et de champs - fonctionnement idem pour les articles)
    $result = mysql_query ( string $query [, resource $link_identifier ]) or die(mysql_error()); // construire cette ligne en fonction des paramètres de connexion à la sa bdd
    $row = mysql_fetch_assoc($result);
    $titre = stripslashes($row['titre']); // titre est le nom du champs titre dans la bdd
    $desc = strip_tags(stripslashes($row['description'])); // description est le nom du champs description dans la bdd
    
    2. de l'injecter dans la balise title
    Code:
    <title><?php echo $titre_issu_de_la_bdd;?></title>
    On procède de la même manière pour la description :
    Code:
    <meta name="description" content="<?php echo $description_issue_de_la_bdd;?>" />
    Si on n'a pas prévu de champs description dans la bdd, il est possible d'extraire les 175 premiers caractères du contenu (le plafond est de 176 caractères pour google)
    Mais je conseille vivement d'intégrer un champs description spécialement dédié.

    Il est possible de peaufiner la démarche en conditionnant les résultats selon certains critères.
    Ainsi une fonction à base de switch permettra de nuancer les résultats et éventuellement éviter les répétitions de même titres et/ou descriptions dans plusieurs pages.
    Cette procédure peut aussi, pour des petits sites, se suffire à elle-seule.
    Exemple :
    Code:
    switch($idrubrique) {
    case 1 : // rubrique produits
    $titre = "Société MACHIN - Liste des Produits";
    $description= "Découvrez tous nos produits...";
    break;
    case 2 : // rubrique services
    $titre = "Société MACHIN - Liste des Services";
    $description= "Découvrez l'ensemble de nos services...";
    break;
    case 3 : // rubrique contact
    $titre = "Société MACHIN - Nous contacter";
    $description= "Pour nous contacter téléphonez au...";
    break;
    default : // pour la page d'accueil par exemple
    $titre = "Société MACHIN - Spécialiste du TRUCMUCHE - MACHIN-CHOSE";
    $description= "Blabla de présentation...";
    break;
    }
    On n'oublie pas, bien sur, d'injecter les résultats ($titre et $description) dans les meta correspondant.

    Tout cela se construit évidement en amont, afin de pouvoir injecter tout le contenu dans le head de la page.
    Pour ma part, j'utilise un fichier header.php qui contient les scripts spécifiques à cette partie de mes pages.

    Je reviens sur le fait qu'une connaissance de base en php et sql est nécessaire.
     
  3. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 361
    J'aime reçus:
    2
    Toutafé.
    La question de base c'est "comment je structure mes données". Pour ça tu peux t'inspirer de systèmes de blogs assez bien faits, comme WordPress ou Dotclear, et regarder un peu dans le moteur.
    L'idée globale étant d'avoir une base de données avec des "pages" (contenu) et tout ce qui s'y rapporte, url, meta, etc...

    Ensuite ton fichier header.php doit appeler le contenu de la page à afficher
     
  4. SpeedAirMan
    SpeedAirMan WRInaute passionné
    Inscrit:
    2 Juin 2007
    Messages:
    2 391
    J'aime reçus:
    0
    @dolmenhir : prendre une enclume pour écraser une mouche, voilà à quoi ton 1er code me fait penser (mais ça reste une solution).

    Le 2ème code me semble mieux, mais encore trop recherché à priori pour les besoins de AjaxGin.


    Perso, je verrai plus qq chose comme ça :
    Code:
    <?php
    $titre = "Société MACHIN - Liste des Produits";
    include("haut_page.php");
    ?>
    
    [corps de la page...]
    
    <?php include("bas_page.php"); ?>
    ... et "haut_page.php" utiliserait la variable $titre pour afficher le titre.

    Même chose pour description.
     
  5. dolmenhir
    dolmenhir WRInaute discret
    Inscrit:
    23 Novembre 2009
    Messages:
    52
    J'aime reçus:
    0
    j'ai un site qui compte plusieurs centaines de pages, et là le premier code trouve toute sa légitimité car la dynamique d'extraction des données allège la gestion.
    Pour les sites pas plus gros qu'une mouche (si petit ? ça existe ??) le switch peut suffire amplement, et permet une gestion centralisée des titres et des descriptions (grâce à la page header.php que l'on place via un include).
    Ce switch peux servir à plein de choses d'ailleurs, par exemple activer certains scripts uniquement sur les pages qui en ont besoin (comme le googlemap et son onload), ou changer de feuille de styles... et c'est sans limite a condition que le site lui en ait une (sinon ça devient l'usine à gaz)
     
  6. SpeedAirMan
    SpeedAirMan WRInaute passionné
    Inscrit:
    2 Juin 2007
    Messages:
    2 391
    J'aime reçus:
    0
    Bien vu !

    Et oui, des sites si petits ça existe (sites de 5 à 20 pages, il y'en a des tonnes).
     
  7. HawkEye
    HawkEye WRInaute accro
    Inscrit:
    23 Février 2004
    Messages:
    13 932
    J'aime reçus:
    5
    Le problème réside surtout dans la création du template.

    Inclure "haut_page.php" avant même d'avoir traité les données, ce n'est pas malin, car s'il faut aller chercher les éléments en db, il va falloir faire une requête de plus pour rien.

    L'idéal est plutôt:

    En 1er: traiter les variables et de déterminer le contenu des différents éléments, de sorte à les stocker dans des variables et à pouvoir les réutiliser par la suite.

    En 2nd: inclure les fichiers requis, et faire l'output des infos stockées dans les variables.

    Exemple:

    Code:
    <?php
    
    $page_id = $_GET['p_id'];
    
    > requêtes et sous-requêtes nécessaires à l'extraction des données
    > traitement des données et stockage dans les différentes variables (ie: $p_title = $page_title.' | Mon Site'; etc...), création des éléments comme le menu, le contenu des différents conteneurs, etc...
    
    ?>
    <?php 
    include('haut_page.php'); // lequel fait par exemple l'output de $p_title dans <title><?php print $p_title; ?></title>
    ?>
    
    <div id="header">
    <?php include('page_header'); ?>
    </div>
    
    <div id="menu">
    <?php print $menu; // déterminé plus haut ?>
    </div>
    
    <div id="contenu">
    <?php print $content; // déterminé plus haut ?>
    </div>
    
    <div id="footer">
    <?php print $footer; // déterminé plus haut ?>
    </div>
    
     
  8. dolmenhir
    dolmenhir WRInaute discret
    Inscrit:
    23 Novembre 2009
    Messages:
    52
    J'aime reçus:
    0
    Je confirme !
    C'est pour cela que je disais qu'il fallait traiter cela en amont, c-a-d avant l'écriture du head (ce qui est fort logique du reste).
    C'est d'ailleurs très précieux de collecter l'ensemble des données avant de construire sa page et de stocker cela dans des variables (certaines de session pour des traitements transversaux)
     
  9. AjaxGin
    AjaxGin Nouveau WRInaute
    Inscrit:
    2 Février 2011
    Messages:
    2
    J'aime reçus:
    0
    Merci pour vos réponses !

    J'ai des notions de bases en PhP/MySQL, mais seront elles-suffisantes? On va bien voir.

    En tout cas, je vais essayer vos codes, merci encore :)
     
  10. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 115
    J'aime reçus:
    315
Chargement...
Similar Threads - [Création titres descriptions Forum Date
Mot-clé visé dans collections + balises titres + H1 = Spam ? Débuter en référencement 21 Février 2020
RGPD et conséquences des titres émis à compter de 2020 Droit du web (juridique, fiscalité...) 8 Janvier 2020
Search Console Titres et descriptions en double dans la nouvelle search console Google : l'entreprise, les sites web, les services 10 Avril 2019
Hiérarchie des titres avec un builder Débuter en référencement 8 Décembre 2018
Reprise de mon titre Home sur mes titres de sous-pages Problèmes de référencement spécifiques à vos sites 25 Septembre 2018
Etrange, nom de l'ancienne société dans les titres de résultats Google Problèmes de référencement spécifiques à vos sites 26 Septembre 2017
Les caractères spéciaux ☺ dans les titres Débuter en référencement 10 Juillet 2017
Meilleure technique pour luter contre les Titres dupliqués sur un site e-commerce ? Référencement Google 23 Juin 2017
Black SEO ? titres en display none Problèmes de référencement spécifiques à vos sites 22 Juin 2017
Balises titres pour un portfolio Problèmes de référencement spécifiques à vos sites 2 Mai 2017