fnicollet Posté 17 Octobre 2006 Posté 17 Octobre 2006 Bonjour, je developpe en ce moment un site en php et je souhaite soigner mon referencement. Je sais que la balise title est une des plus importantes pour l'indexation par les moteurs et qu'il est important de la modifier selon la page. La structure de mon site est faite avec beaucoup d'include mes métas sont pour l'instant les memes sur toutes les pages mais j'aimerai par exemple qu'ils changent lorsqu'un utilisateur consulte un article. Apres quelques tests, je me suis apercu que s'il on ne met pas la balises title dans le head mais n'importe ou dans le body, le titre de la page s'affiche bien ! Mais je me demande si un analyseur robot va le prendre en compte ou pas (étant donné que ce n'est pas la structure normale). Voila, je ne peux pas faire passer de variable au début du fichier pour modifier le titre en fonction du contenu puisque tout est determiné par les include suivants ... Merci à tous ceux qui pourront m'éclairer (ou me donner votre technique pour changer le titre alors que le head est au début du page ) fabien
Dan Posté 17 Octobre 2006 Posté 17 Octobre 2006 Le problème est que selon la norme W3C, la balise <title> doit être placée entre <head> et </head> Et comme les moteurs se basent sur les normes pour créer leurs indexeurs, je ne prendrais pas le risque de la mettre ailleurs. As-tu d'ailleurs vérifié sur tous les navigateurs, car certains sont vraiment laxistes quant-aux standards ?
fnicollet Posté 17 Octobre 2006 Auteur Posté 17 Octobre 2006 sous firefox, cela marchait, je n'ai pas essayé sur IE merci de ta réponse, je pense que je vais tenter de trouver une autre solution pour adapter le title au contenu ! merci
fnicollet Posté 17 Octobre 2006 Auteur Posté 17 Octobre 2006 après quelques recherches supplémentaires, on dirait que la meilleure methode est d'include une page php comme ceci : <title><?php include("titre-page.php");?></title> et ensuite d'adapter en fonction des variables de l'url (grace à l'url rewriting notamment).
Sebastien Posté 17 Octobre 2006 Posté 17 Octobre 2006 Je ne me risquerai pas à mettre le <title> hors du <head> : ce n'est pas conforme, il y a donc des risques non négligeables de mauvais traitements par les "agent utilisateurs" que sont les navigateurs et les robots d'indexation...
Kimberlyclarko Posté 17 Octobre 2006 Posté 17 Octobre 2006 J'avais testé début 2005 : je n'avais pas le choix et les TITLE étaient dans le body. Google n'avait pas interprété cela comme des balises TITLE, donc mieux vaut eviter...
yep Posté 17 Octobre 2006 Posté 17 Octobre 2006 (modifié) http://www.w3.org/TR/html4/struct/global.html#h-7.4.2 (en) et http://www.la-grange.net/w3c/html4.01/stru...tml#h-7.4.2 (fr) tout est là Modifié 17 Octobre 2006 par yep
Compte supprimé Posté 17 Octobre 2006 Posté 17 Octobre 2006 Tu prends ton problème du mauvais coté. QU'est ce qui t'empêche de mettre ta balise <title> dans ton <body> ? Rien ! Le début de ton script php doit te servir à récupérer les données de ta page. A partir où elles sont disponible, tu peux faire l'affichage.
Mona Posté 18 Octobre 2006 Posté 18 Octobre 2006 (modifié) Bonjour, Si ça peut t'aider, voici une technique que j'utilise. Elle consiste à lire le fichier php complet avant d'afficher la page... On peut donc générer un titre en fonction du contenu... Voici l'include "auto_titre.php": <?php// Génération automatique du titre (balise <TITLE>) en fonction du contenu de la page // pour améliorer le référencement. Cela permet d'obtenir une titre différent par page automatiquement//Chaines clés à trouver:// On cherche le premier titre dans le contenu : Exemple: <span class="Titre">Qu'appelle-t-on algèbre de Boole?<span> $trouve=false; $strkeydeb='<span class="titre">'; //titre extrait de son contenu. Si tes pages sont bien structurées, c'est facile... $strkeyfin='</span>'; // On lit la page elle-même $lines = file ($_SERVER['DOCUMENT_ROOT'].$HTTP_SERVER_VARS['PHP_SELF']); </span> foreach ($lines as $line) { if (!$trouve){ $deb=0; $fin=0; $deb = strpos(strtolower($line), $strkeydeb); if ($deb > 0){ $line=substr($line, $deb + strlen($strkeydeb) - 1); $fin = strpos(strtolower($line), $strkeyfin); if ($fin > 0) { $Titre=substr($line, 1, $fin - 1); $trouve=true; } } } }} Et cet include est dans l'entête d'un millier de pages: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html40/strict.dtd"><html> <head> <?php include($_SERVER['DOCUMENT_ROOT']."/inc/auto_titre.php"); echo '<title>'.$Titre.'</title>'; ?> Mona. PS: Désolé pour la lisibilité du code, je ne trouve pas le moyen de l'indenter sur le forum... ** /* edit modérateur: on indente le code en utilisant la balise [ code ] (bouton ) */ Modifié 18 Octobre 2006 par Dudu
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant