8795 sujets

Développement web côté serveur, CMS

Bonjour,

grand débutant en codage PHP (ainsi que sur ce forum) j'ai bien entendu quelques soucis pour trouver des solutions abordables -- pour mon niveau.

Soit la situation suivante :
Pour l'instant, j'ai quelques pages en PHP utilisant la fonction
<?php include('nomdefichier.inc.php'); ?>
pour gérer plus facilement le contenu de mes header, footer et menus (qui changent assez souvent).

Le fichier header.inc.php ne contient que les infos relatives au contenu du header (image, nom et slogan du site, menu).
Tous les éléments tels que doctype, meta-tags, titre... se trouvent sur les pages "normales".

Ce que je voudrais faire :
Je voudrais inclure ces éléments (doctype, meta-tags, titre...) dans mon fichier header.inc.php.

Difficultés :
1. Je veux conserver la possibilité d'avoir un titre différent sur chaque page
2. Certaines balises meta-tags sont communes a toutes les pages (ex: author, copyright, revisit-after...), alors que la balise "description" contient des informations qui seront différents sur chaque page.

un exemple de code serait plus que bienvenu!

Merci d'avance,
Philippe
Modifié par Takahashi (15 Nov 2010 - 10:42)
Bonjour,
Takahashi a écrit :
1. Je veux conserver la possibilité d'avoir un titre différent sur chaque page
C'est facilement faisable, mais ce serait plus facile pour nous si nous avions un exemple de tes pages PHP (leur construction exacte varie d'un dev à un autre).

En gros ce dont tu as besoin c'est de ta page header.php qui place les éléments HTML et qui récupère les bonnes valeurs (contenu/value des éléments) grace à PHP. La récupération peux se faire via un tableau ou un switch (si tu n'a pas trop de pages, sinon les performances ne sont pas très bonnes).

Takahashi a écrit :
2. Certaines balises meta-tags sont communes a toutes les pages (ex: author, copyright, revisit-after...), alors que la balise &quot;description&quot; contient des informations qui seront différents sur chaque page.
Les meta "communes" peuvent d'ailleurs être supprimées, elles ne servent strictement à rien.
Tu peux par exemple faire comme ceci

fichier config/config.php

<?php
	define(DOCTYPE, '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">');
	define(META_ETIQUETTES_COMMUNES, '
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<meta name="Author" content="Takahashi" />
		<meta name="Copyright" content="libre de droits" />
		<meta name="Revisit-after" content="30 days" />
		');
	$$tMetaEtiquettesSpecifiques = '<meta name="Description" content="' . $tDescription . '" />';
?>


fichier pages/accueil.php

<?php
	$tTitre = 'Accueil';
	$tDescription = 'page d\'accueil';
	require_once('../config/config.php')
	$tTitre = 'Accueil';
	$tDescription = 'page d\'accueil';
	require_once('../gabarits/accueil.php');
?>


fichier gabarits/accueil.php

<?php
	require_once('../gabarits/entete.php')
	echo'
		<body>
			Salut tout le monde!
		</body>
	</html>';
?>


fichier gabarits/entete.php

<?php
	echo DOCTYPE . '
	<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
	  <head>' .
		META_ETIQUETTES_COMMUNES . ' ' .
		$tMetaEtiquettesSpecifiques . '
		<title>' . $tTitre . '</title>
	  </head>';
?>


Comme le dit l’administrateur ci-dessous on peut créer la page en utilisant moins de fichiers.
C’est juste une habitude que l’on a de séparer la configuration, du code et de l’affichage.
Cette façon est un peu plus lourde (un peu moins quand même qu’un environnement de travail) et c’est comme cela que l’on m’a «formaté» quand j’ai fais mes débuts. Toute une éducation a refaire Smiley cligne
Toute méthode a ses qualités et ses défauts.

Cordialement.
Modifié par adrien881 (15 Nov 2010 - 11:35)
Adrien, tu compliques énormement la chose... surtout pour un débutant.

ceci :
[b]fichier config/config.php[/b]
<?php
	define(DOCTYPE, '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">');
	define(META_ETIQUETTES_COMMUNES, '
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<meta name="Author" content="Takahashi" />
		<meta name="Copyright" content="libre de droits" />
		<meta name="Revisit-after" content="30 days" />
		');
?>


Est plus simple ainsi :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	<meta name="Author" content="Takahashi" />
	<meta name="Copyright" content="libre de droits" />
	<meta name="Revisit-after" content="30 days" />
Bonjour,

Par exemple la page about.php commence ainsi (j'efface les vraies valeurs)

<!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="en">

<head>

<title>TITRE</title>

<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="EN" />
<meta name="keywords" content="key1, key2, key3, key4" />
<meta name="description" content="Ceci est la description" />
<meta name="author" content="MOI" />
<meta name="copyright" content="Copyright (c) 2008 - 2010 MOI - All rights reserved" />
<meta name="revisit-after" content="31 days" />
<meta name="robots" content="FOLLOW,INDEX" />

<link href="../../script/script.css" rel="stylesheet" type="text/css" />

</head>

<body>

<div class="wrapper">

<?php include('../include/header.inc.php'); ?>

<div class="content">

<div class="title">
<h1>
TITRE
</h1>
</div>
<br style="clear:both" />

etc...

Et le fichier header


<div class="header">
<div class="titleheader">
<span class="headertitle">
<a href="../about/about.php">About MOI</a>
</span>
</div>

<div class="menuheader">
<ul id="menu">
<li><a href="../link1.php">Link</a></li>
<li><a href="../link2.php">Link</a></li>
<li><a href="../link3.php">Link</a></li>
<li><a href="../link4.php">Link</a></li>
<li><a href="../link5.php">Link</a></li>
</ul>
</div>
</div>
<br style="clear:both" />


Le code n'est pas encore optimisé, certaines choses vont probablement changer.

J'ai fait quelques recherches sur le web, et j'ai trouvé des exemples avec la fonction echo
(ex: http://www.webmaster-talk.com/php-forum/164846-dynamic-title-using-php.html)
mais je ne sais pas trop ou caser le code, ni si j'arriverai a obtenir le résultat désiré..

Merci