2010-09-16 29 views
3

Nous incluons un fichier header.php sur toutes les pages de notre site. Ainsi, nous pourrions soit placer un seul titre dans le fichier header.php qui serait appliqué à l'ensemble du site, soit avoir un en-tête personnalisé dans chaque page pour être plus descriptif. Le problème est que, ce faisant, le titre serait en dehors des balises de tête (qui restent dans le fichier header.php) et marqué comme invalide.PHP pour placer le titre généré en page dans <head>

Existe-t-il une sorte de fonction que nous pouvons utiliser pour définir une variable ($ pageTitle) dans la page, qui sera affichée dans la balise head?

Merci.

Répondre

5

En fait, il devrait être de cette façon

news.php:

<? 
include "config.php"; //connect to database HERE. 
$data = getdbdata("SELECT * FROM news where id = %d",$_GET['id']); 
$page_title = $data['title']; 
$body = nl2br($data['body']); 

$tpl_file = "tpl.news.php"; 
include "template.php"; 
?> 

template.php:

<html> 
<head> 
<title><?=$page_title?></title> 
</head> 
<body> 
<? include $tpl_file ?> 
</body> 

tpl.news.php

<h1><?=$page_title?></h1> 
<?=$body?> 

pure et simple

+0

Tout ce que vous avez toujours voulu savoir, y compris le schéma de la base de données! Et convertir de nouvelles lignes dans le corps! Tu gères! – zaf

+0

hehe j'aime de tels commentaires. Bien que l'idée d'utiliser des modèles n'est pas si évidente. –

+0

Merci pour la réponse et les commentaires. Je suppose que j'ai juste eu un mauvais design qui mène à une partie de la page tirée avant le reste. Je vais devoir trouver comment implémenter votre idée de base sur notre site. Merci encore. – Andelas

1

Humm .....

<?php 
$pageTitle = "Test"; 
include('header.php'); 
?> 

EDIT

Puis dans votre header.php

<head> 
    <title><?php echo $pageTitle; ?> </title> 
</head> 
+0

Je devrais avoir clarifié, le fichier header.php contient des fonctions nécessaires pour générer la page (connexion à la base de données, etc.). Ainsi, par exemple, lorsque nous avons une histoire, nous devons d'abord charger le fichier header.php pour établir la connexion et extraire les détails de l'histoire. Ensuite, j'aimerais que le titre soit le titre d'entrée des nouvelles. C'est plus spécifique au problème. – Andelas

+0

Oui, l'utilisation d'une variable de titre de page globale fonctionnera et vous devez juste vous assurer que, comme réponse, vous déclarez sa valeur avant de l'utiliser dans l'en-tête. Vous pouvez également avoir une valeur par défaut et ainsi dans votre header.php faire: if (vide ($ pageTitle)) {// mettre le titre à la valeur par défaut //} else {// mettre le titre à $ pageTitle} – Chris

+2

@scatteredbomb vous avez juste un mauvais design et devez le reconstruire. Divisez votre en-tête en 2 parties. –

1

On dirait que vous voulez un titre dynamique sur certaines pages?

<?php 
$defaultPageTitle='Default Title'; //Default title 
include('header.php'); 
?> 

<?php 
/* You would define $newPageTitle here if necessary 
(i.e. use $_SERVER['REQUEST_URI'] to get the URL 
and check a database for the $newPageTitle */ 
?> 
<head> 
<?php 
if(isset($newPageTitle)){echo '<title>'.$newPageTitle.'</title>';} 
else{echo '<title>'.$defaultPageTitle.'</title>';} 
?> 
</head> 
+0

Le problème étant que nous utilisons déjà les balises head dans header.php. Nous devons installer des balises meta, des feuilles de style, etc. et cela est fait dans cet entête.Ces feuilles de style et autres inclus sont utilisés pour styler l'en-tête réel (onglets/liens) de sorte que nous ne pouvons pas attendre pour les définir plus tard dans la page après que nous ayons extrait les données nécessaires pour créer le titre. – Andelas

+0

@scatteredbomb Oui, vous avez ciblé le problème exactement! Il ne devrait pas y avoir de sortie avant de sortir toutes les données nécessaires pour créer toute la page! –

+0

Oups, j'ai raté cette partie quand j'ai d'abord lu la question! :) – Matt

0

La façon dont je le vois, vous pouvez encore faire tout ce travail dans votre tête:

<?php 
include(...your config/connect file...); 
mysql_query(... get page variables ...); 
$pageTitle = stripslashes($titlefromDB); 
?> 
<html><head><title><?php echo $pageTitle; ?></head> 

vous Conclut ainsi header.php. Maintenant, incluez ceci sur chaque page que vous voulez utiliser, et suivez avec votre <body></body></html>. Juste une idée, mais de toute façon, vous allez devoir vous connecter à votre base de données d'abord, vérifier si la page existe, si le titre est défini comme variable, puis commencer à construire html.

+0

il ne peut pas être inclus dans chaque page. juste parce que chaque page a besoin de variables ** différentes **. C'est le modèle devrait être inclus dans la page principale, pas contraire –

+0

Comment? Je reçois actuellement mes requêtes dynamiques de l'url ($ _GET ['id']) et les branche directement dans ma requête mysql (avec un peu de nettoyage ...). Maintenant, chaque page de mon site a des besoins différents, donc chaque dossier a un index avec un php en-tête différent, et j'inclue le meta.php dans chacun. – Bryan