Bonjour à tous,

Je vous explique rapidement : je viens de créer un site qui utilise le système des pseudo frames (fonction include en php).

Le problème, c'est que le titre de ma page est défini dans ma page principale (index.php), et du coup, à chaque fois qu'une autre page (.htm) est incluse dedans, le texte de la barre de titre ne change pas (puisqu'il ne faut pas que je remette les balises <head> dans mes pages .htm)...

Ma question est donc simple, comment puis-je changer le texte de cette maudite barre de titre?

J'ai pensé à javascript (même si je ne connais pas la méthode), mais je me suis demandé si le robot de google prenait en compte ce type de solution...

Merci de me venir en aide. Smiley biggrin

(Et un grand merci à Raphaël, qui m'a déjà beaucoup appris grâce à ses différents tutos!)
Modifié par gainsbourg (04 Jan 2006 - 10:02)
gainsbourg a écrit :
Bonjour à tous,

Je vous explique rapidement : je viens de créer un site qui utilise le système des pseudo frames (fonction include en php).

Le problème, c'est que le titre de ma page est défini dans ma page principale (index.php), et du coup, à chaque fois qu'une autre page (.htm) est incluse dedans, le texte de la barre de titre ne change pas (puisqu'il ne faut pas que je remette les balises <head> dans mes pages .htm)...

Ma question est donc simple, comment puis-je changer le texte de cette maudite barre de titre?

J'ai pensé à javascript (même si je ne connais pas la méthode), mais je me suis demandé si le robot de google prenait en compte ce type de solution...

Merci de me venir en aide. Smiley biggrin

(Et un grand merci à Raphaël, qui m'a déjà beaucoup appris grâce à ses différents tutos!)

Vaste question.

Pour ma part, je fais une page = une page :

articles.php >>
définition du titre dans une variable
include header
contenu
include footer

Le javascript ne permet de modifier un tel titre de page.

Pour renommer index.php?page=articles en articles.html ou mon_article.html (donc l'adresse de ta page prise en compte par google, tu as l'URL Rewriting (chercher sous google...)
et en coupant ton <head> de façon à avoir dans ta page principale ce qui est spécifique

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Titre de la page spécifique</title>
<meta name="Description" content="spécifique à la page" />
<meta name="keywords" content="spécifiques à la page" />
<?php // Entete 'head' commun a tous les fichiers
include ('haut.php');
?>
<body>
...


et dans ton fichier inclus ce qui est général ?



<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="Author" content="Moi!" />
<meta http-equiv="content_style_type" content="text/css" />
<link rel='stylesheet' href="style.css" type="text/css" />
</head>


Ca marche très bien pour mes sites principaux même s'il n'est pas conseillé de hacher comme cela les morceaux sur ce site Smiley cligne

Tu peux naturellement ajouter dans ton fichier inclus les zonages, les menus génériques, ajouter un autre fichier inclus pour un menu spécifique à une zone de ton site...

Par contre, bien faire attention de fermer des zones que tu ouvrirais dans les fichiers inclus et fermerais dans le fichier principal
Il y a encore mieux je pense, et c'est une solution simple qui necessite juste une variable dans la page include (mais il faut que la page include soit en php) et la fonction print(""); ou directement <?=$var?>.

Exemple, je découpe mon header de la sorte :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>

<!--2/Les méta Tags-->
<meta http-equiv="content-Language" content="fr">
<meta http-equiv="content-Type" content="text/html; charset=iso-8859-1">
<!--2/Les méta Tags\-->

<!--6/Appel par une variable le titre de la page-->
<title>[#red]<?=$nomdelapage?>[/#]</title>
<!--6/Appel par une variable le titre de la page\-->

</head>

<body>
	
	<div id="menu">

<ul class="menu">

	<li><a href="index.php" id="accueilnav" accesskey="1">Accueil</a> | </li>
	<li><a href="plandusite.php" id="plandusitenav" accesskey="3">Plan du site</a> | </li>

</ul>

	</div>


Tu as remarquer la fonction print en rouge :
[#red]<?=$nomdelapage?>[/#]


Dans cette fonction tu à la variable qui donnera à chaque page son nom, cette variable est :

$nomdelapage


Mais tu vas me demander ou est ce que tu met cette variable ? tout simplement en haut (au tout début de ta page de contenu) comme cela :

<?

/* Variable pour le titre de la page */
	[#red]$nomdelapage[/#] = "L'amicale des BTS CPI Carcassonnais";
/* Variable pour le titre de la page */

/* Include pour avoir le haut de la page (menu) */
	include("header.php");
/* Include pour avoir le haut de la page (menu) */

?>

<!--Contenu de ma page-->

	<p>Ici je marque le contenu que je veux, je ne touche rien d'autre que le contenu, puisque tout le reste est deja pret</p>

<!--Contenu de ma page-->

<?

/* Include pour avoir le bas de la page*/
	include("footer.php");
/* Include pour avoir le bas de la page*/

?>


Voila tu à réaliser ton include avec changement de nom de page.

En fait le fonctionnement que je te propose est un peu different des autres, car en fait sur chaque page que tu crée, tu vas inclure deux fichiers :

- Le header
- Le footer

Avec cette méthode, tu peux avoir un contenu différents sur chaque page, mais toujours les meme menu ou autre sur toutes tes pages.

Si tu veux plus d'exemple encore de "jeu" avec les variables, télécharge ce que j'ai crée pour un autre sujet du forum sur ce lien (dossier Zip 4 ko). Dans ces fichiers il y a pas mal de jeu avec les variables, mais aussi toutes les explications necessaires comprise à l'intérieur Smiley cligne

Bonne continuation Cordialement SpB8
Modifié par Super_baloo8 (02 Oct 2006 - 14:34)
Bonjour,

Personnellement, voici comment je divise les différentes parties de mes pages :

1. Un premier fichier de header qui contient les fonctions php utilisées par la plupart des pages, qui ne renvoie encore rien au navigateur. Ex : connexion à la base SQL

2. Un deuxième fichier de header qui contient le code de <html> jusqu'à juste avant </head>. De cette manière, je peux inclure un CSS ou un javascript spécifique à la page en cours si c'est nécessaire

3. Un troisième fichier de header qui contient </head><body> et le menu qui reste identique sur toutes les pages

4. Ensuite je mets mon contenu

5. Et enfin, j'ai un footer qui contient le copyright et qui termine la page.

En gros, au final, j'ai donc une page comme ceci :


<?php
include("header1.php");
$titrePage = "Ma page d'accueil";
include("header2.php");
// ...
include("header3.php");
echo "<p>Vous êtes ici : blablabla</p><h2>Titre</h2><p>blablablabla blabla bla blablablabla</p><p>blablabla bla blabla blablabla bla</p>";
include("footer.php");
?>


Avec cette manière de faire, un fichier .php = une page web

Je n'aime pas trop le principe inverse, d'une part à cause des URL semblables à index.php?page=accueil qui sont mal reconnus par mister Google, qui sont potentiellement plus dangereux en matière de sécurité (il faut penser au petit malin qui modifie les variables GET, tandis que ce n'est pas nécessaire dans mon cas, du moins pas systématiquement mais uniquement pour les formulaires), à cause du titre de la page qui reste statique (nous y voilà, aucune possibilité de le changer, avec ce système des pseudo-frames) et tout ce que ce titre statique implique (on s'y perd dans l'historique, etc).

Ceci dit, le titre de la page est parfaitement modifiable par javascript, mais ni Google, ni l'historique n'en tiendront compte.

Voici la commande javascript, au cas où. Mais je te conseille d'abandonner le système des pseudo-frames et d'opter pour le raisonnement une page = un fichier php qui fait un include d'un header (tu n'es pas obligé d'en mettre trois, si un te suffit, c'est bon) et d'un footer.

window.top.document.title = "Coucou, ceci est le titre de la page";
Vous avez fait les choses très intelligemment Super_baloo8 et QuentinC. Merci de vos exemples, ça m'inspire grandement. C'est comme ça que je comptais procéder finalement après être passé par les tutoriels habituels d'include.

Juste une petite question. Pour les éléments php redondant comme header1.php par exemple, peut-on préciser au serveur de cacher ce bout de code ? J'ai cru lire dans un topic que quelqu'un avait noté un temps de latence assez important d'une seconde entre une version html d'une page et sa version multi-includée Smiley confused
1 seconde, c'est pas rien.
Le temps de latence de la version includée est quand même pas si fréquent que ça. Si tu fais des longs traitements dans la partie principale, c'est presque normal. Par exemple, quand je valide une page au W3C, il n'est pas rare que j'obtienne la partie commune 30 secondes avant les infos de validation eux-mêmes.
Donc je pense que ça dépend de ce que tu fais comme traitement dans la partie principale. Des fois, ça peut être SQL qui ralentit la machine, ou la génération d'image, la récupération d'infos sur d'autres serveurs, la lecture de fichier, etc...
@Globy

Globy a écrit :
J'ai cru lire dans un topic que quelqu'un avait noté un temps de latence assez important d'une seconde entre une version html d'une page et sa version multi-includée
1 seconde, c'est pas rien.


Cette personne c'étais moi Smiley langue

L'include quand elle est utilisé à outrance ralenti légèrement le temps d'affichage. Le test que j'avais effectué étais sur une page qui étais déja à la base assez lourde. J'avais effectuer dessus 8 ou 9 include contenant uniquement du texte, la page pesais environ 130 Ko ou quelque chose comme ca, je pense que c'est cela qui rallentissais (très legerement car ce n'est pas une seconde réel, mais environ).

Ne t'inquiète pas, ce n'est pas deux petites include de header ou footer qui ralentirons ton site Smiley cligne
salut,

En reprenant le tuto Inclure un fichier dans un autre, grâce à CSS et PHP
tu peux ajouter un titre différent par page (ainsi que des mots-clés, une description etc...)
avec un code un peu comme ça dans l'index.php :
<html>
<head>
[#red]<?php if(!isset($_GET['page'])) {$page = 'accueil';} else {$page = $_GET['page'];}
switch($page){
     case 'accueil' :
          $inclure = 'accueil.txt';
          $titre_page = 'Bienvenue sur mon site';
          $description = 'Site en php et css';
          $mots_cles = 'php, css, pseudo frames';
     break;
     case 'presentation' :
          $inclure = 'presentation.txt';
          $titre_page = 'Tout sur mon site';
	  $description = 'Page de présentation du mon site';
	  $mots_cles = 'php, css, pseudo frames';
     break;
     case 'suite' :
          $inclure = 'suite.txt';
          $titre_page = 'Suite de mon site';
	  $description = 'c\'est une belle page';
	  $mots_cles = 'mot1, mot2';
     break;
	 case 'fin' :
          $inclure = 'fin.txt';
          $titre_page = 'Fin de mon site';
	  $description = 'c\'est fini';
	  $mots_cles = 'mot1, mot2';
     break;
}

?>[/#]

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title> [#red]<? echo $titre_page; ?>[/#]</title>
<meta name="description" content="[#red]<? echo $description ?>[/#]">
<meta name="keywords" content="[#red]<? echo $mots_cles ?>[/#]">
<style type="text/css">...</style>
</head>

<body>
<div class="haut">mon site .com</div>
<div class="gauche">
<ul>
	<li><a href="index.php?page=accueil">Accueil du site</a></li>
	<li><a href="index.php?page=presentation">Présentation</a></li>
	<li><a href="index.php?page=suite">Suite</a></li>
	<li><a href="index.php?page=fin">Dernière page</a></li>
</ul></div>
<div class="frame">
[#red]<? include($inclure); ?>[/#]
</div>
<div class="bas">Cette partie basse reste fixe</div>
</body>
</html>

Modifié par Alan (06 Jan 2006 - 11:39)
Cette méthode est pratique pour une autre utilisation, mais pas pour le titre de la page, car tes liens de cette forme posent probleme au référencement, et à l'utilisateur.
Salut,

En fait cette méthode ne change rien par rapport à ce tuto d'alsacréations en ce qui concerne la forme des liens. C'est juste une légère amélioration qui permet de donner un titre, des mots-clés et une description spécifique à chaque page. (et améliorer donc le référencement). C'est donc une bonne méthode si l'on veut garder le système décrit dans ce tuto. En tout cas c'est plus propre que de hacher les pages comme j'ai lu plus haut Smiley eek Smiley biggrin

C'est vrai qu'il y a d'autres systèmes, mais alors ça n'aurait plus grand chose à voir avec ce tuto

Concernant le type de liens qu'on a avec ce tuto, en fait je ne crois pas que ce soit mauvais pour le référencement, en tout cas je ne vois pas du tout pourquoi
Modifié par Alan (07 Jan 2006 - 06:42)
Bonjour,

Les urls du type http://example.org/index.php?foo=bar ne sont effectivement pas favorables (actuellement) au référencement dans les moteurs du type Google. En fait, quand on est contraint de les utiliser, on les maquille en url du type http://example.org/foo/bar/ via l'url rewriting...

Côté architecture PHP, ce système de l'index.php avec header et footer statiques,et contenu directement inclu, n'est pas beaucoup utilisé sous la forme très simple où il est décrit dans le tutoriel. Il est utilisé plutôt en étant couplé à un système de template : l'index ne fait que "préparer" les données, avec généralement gestion d'une BDD, de sessions utilisateurs, etc. Celles-ci sont ensuite exploitées par un ou plusieurs scripts qui formatent l'ensemble de la page. Voir le fonctionnement de dotclear, ou celui de mediawiki, par exemple.
Modifié par Laurent Denis (07 Jan 2006 - 08:03)
Bonjour,
Je sais qu'il peut y avoir des problèmes d'indexation avec des URL trop complexes, ou un référencement non optimal avec des URL dans lesquels ne figure aucun mot-clé en rapport avec la page (du style "article.php3?id_article=xxx")

Mais quand l'url n'a ni le premier défaut, ni le second ?

Si par exemple quelqu'un veut créer son petit site perso de quelques pages sans frames, et qu'il suit le tuto indiqué, il déterminera lui même ce que sera l'URL. Ainsi pour une page sur les fleurs d'asie, il pourra avoir une URL du type :
www.monsite.fr/index.php?page=fleurs-asie
Est ce qu'une page avec cette URL sera moins bien référencée qu'une autre qui aurait pour adresse www.monsite.fr/fleurs-asie.htm avec strictement le même code html ?
Modifié par Alan (07 Jan 2006 - 09:34)
Alan a écrit :

Si par exemple quelqu'un veut créer son petit site perso de quelques pages sans frames, et qu'il suit le tuto indiqué, il déterminera lui même ce que sera l'URL. Ainsi pour une page sur les fleurs d'asie, il pourra avoir une URL du type :
www.monsite.fr/index.php?page=fleurs-asie
Est ce qu'une page avec cette URL sera moins bien référencée qu'une autre qui aurait pour adresse www.monsite.fr/fleurs-asie.htm avec strictement le même code html ?


Oui. L'url la plus pertinente (d'un autre point de vue, qui est celui de la pérennité) étant celle qui ne te lie à aucune extension : www.monsite.fr/fleurs-asie/
Bonjour,

Voilà j'ai suivi le tutorial de Alsacréation mais mon site n'est pas bien référencé du tout donc j'aimerais savoir qu'elle technique me conseillez-vous ?
- URL Rewriting
- Faire une page en php en incluant l'en-tête et le pied de page


De plus je cherche à spécifier les titres pour les pages...


Merci de vos conseils



Pierre
Modifié par Pierrefox (10 Feb 2006 - 20:40)