8792 sujets

Développement web côté serveur, CMS

Bonjour,

Je voudrais me mettre au templates pour faire un travail plus propre, et différencier html et php. La question que je me pause est la suivante : pour le moment, j'utilise un unique fichier "index.php" qui contient tous les éléments récurents de mes pages (header, footer, menu gauche, menu droit etc), et le contenu de ma page est géré par un gros switch, me permettant de sélectionner le fichier php pour ce contenu. Voila un exemple :


...
<body>
	...
	<div id='page'>
		<?php
			$bdd = mysql_connect ($server, $user, $pass);
			mysql_select_db ($db, $bdd);

			include ('header.php');
			include ('menu_haut.php');
			include ('recherche.php');
			include ('menu_gauche.php');
			include ('menu_droit.php');
			
			echo "<div id='corps'>";
			switch ($_GET['op'])
			{
				case 'liens':
					include ('liens.php');
					break;

				case 'admin_commandes':
					switch ($sop)
					{
						case 'modifier':
							include ('commande/admin/modifier.php');
							break;

						default:
							include ('commande/admin/index.php');
							break;
					}
					break;

				default:
					include ('accueil.php');
					break;
			}
			echo "</div>";
	
			include ('footer.php');
			mysql_close($bdd);
		?>
	</div>
</body>


De plus, dans le fichier "menu_gauche.php", si je veux que ce menu change selon la page, j'aurais aussi un switch pour changer son contenu en fonction des variable $op et $sop (qui sont passées en paramètres dans mon url). J'aurais pu mettre aussi ce switch dans le fichier "index.php", mais bon il ne faut pas trop tirer sur la corde, mon fichier est déjà bien assez long comme ça, si j'ai un gros site de plus de 50 pages à faire, par exemple.

Je ne sais pas si c'est "bien" de faire comme cela, mais toujours est-il que c'est ce que je fais. Au moins, ça a l'avantage d'avoir un seul fichier qui traite tous les cas, puis chaque fichier php ne gère qu'une seule action.

Mes questions sont les suivantes :
- Ma méthode est-elle bonne, ou y a-t'il un meilleur moyen pour centraliser tous les éléments communs à chaque page, sans avoir à créer 50 pages contenant à chaque fois les balises <html>. , <body>, <title>, les includes etc. et dont seul le corps change?
- Est-il possible de faire cela avec un template, et surtout comment?
Modifié par Helldream (07 Feb 2007 - 09:34)
j'ai a peut près le meme problème que toi et je n'arrive pas a trouver comment faire. Ce serait bien si quelqu'un pouvait nous depanner
Bonjour,

Quel est le problème exactement ? Il me semble que Helldream n'a pas de problème, mais se demande juste si la méthode qu'il a adoptée est efficace. En gros, elle l'est. Il aurait aussi pu avoir avoir le switch pour le menu de gauche dans l'index.php, ça n'aurait pas changé grand chose techniquement.

Il est peut-être possible, suivant les contraintes et ce que l'on veut faire, d'avoir un seul switch, qui servira à définir deux variables contenant tout ou partie des chemins vers les fichiers à inclure pour le sous-menu et le contenu principal, et ensuite d'avoir des fonctions du type :
<div id="menu"><?php
if(is_file('commande/admin/'.$quelmenu.'.php')) {include ('commande/admin/'.$quelmenu.'.php');}
?></div>

<div id="contenu"><?php
if(is_file('commande/admin/'.$quellepage.'.php')) {include ('commande/admin/'.$quellepage.'.php');}
?></div>

Mais je suis une bille en PHP donc ne pas trop se fier à moi. Smiley lol
(D'ailleurs je ne suis absolument pas sûr de là où il faudrait mettre les points-virgule dans les fonctions ci-dessus... argh.

Une dernière possibilité : appeler les parties communes des pages depuis chaque page du site (du coup les liens internes seront tous vers des pages machin.php différentes, sans avoir besoin de passer des variables dans l'URL). Ce genre de chose est plus lourde à maintenir, mais peut avoir des avantages (plus de libertés pour une page précise, par exemple si elle doit contenir un script particulier et pas juste un contenu HTML).
Hello,
Il te suffit de decouper ta page en bloc :

header.php, contiendra le haut, le menu par exemple

footer.php, contiendra tout le bas du site

Et entre les deux tu y mets ton switch.