2009-12-28 4 views
0

Comment rendrais-je possible d'avoir des titres dynamiques (je pense que c'est le mot) avec cette configuration? Par exemple quand je regarde un profil je veux qu'il le dise Voir le profil de USERNAME 'à l'intérieur <title>. Comment est-ce que je pourrais rendre ceci possible sans mettre le dessus de HTML sur chaque page individuelle?Dynamic Titles question

Merci beaucoup.

et s'il vous plaît les dont commence à parler des années mvc, je ne besoin que

<html> 
<head> 
<title>KALASHNIKOV - $??</title>  
</head> 
<body> 

<?php 

switch($area) { 

// The default page 
default: 
include_once('pages/main.php'); 
break; 

// This is for registering an account 
case 'register': 
include_once('pages/register.php'); 
break; 

// This is to log in!! (obviously) 
case 'login':  
include_once('pages/login.php'); 
break; 

// This is for logging out 
case 'logout': 
logout(); 
break; 

} 

?> 

</body> 
</html> 

Répondre

2

Eh bien, si vous ne voulez pas mettre le code HTML en haut de chaque page, je suppose que vous l'avez dans un document distinct fichier, comme header.php, qui devrait ressembler à ceci:

<html> 
<head> 
<title><?= $page_title ?> - My Site</title> 
</head> 

Et puis sur chacune de vos pages, il vous suffit de mettre $page_title avant de l'inclure, comme

$page_title = 'My Page'; 
include 'header.php' 

C'est une façon de s'y prendre, de toute façon.

1

chaque sous-page doit faire quelque chose comme:

<?php require('header.php') ?> 

où header.php aurait quelque chose comme:

<title>KALASHNIKOV - <?php echo $GLOBALS['pageTitle'] ?></title> 

ou utiliser zend framework qui a un support pour des modèles et des extraits

0

Je créerais un tableau comme ça, en haut de votre fichier php (peut-être trop compliqué mais comme votre site pourrait grossir, il sera plus facile de le résoudre comme ça):

<?php 
error_reporting(E_ALL); // that's always good 

$sites = array(
    'default' => array(
     'pages/main.php', 
     'Main title' 
    ), 
    'register' => array(
     'pages/register.php', 
     'Register' 
    ), 
    'login' => arary(
     'pages/login.php', 
     'Login' 
    } 
); 

$title = array_key_exists($area,$sites) ? $sites[$area][1] : $sites['default'][1]; 
?> 
<html> 
<head> 
<title>KALASHNIKOV - <?=$title?></title>  
</head> 
<body> 
<?php 
if (array_key_exists($area,$sites)) 
    require $sites[$area][0]; 
else 
    require $sites['default'][1]; 
?> 
0

Mettre cela partout sur votre page:

<script language="JavaScript">document.title ="KALASHNIKOV - blablabla";</script> 
0

Il semble que vous pourriez bénéficier d'une couche supplémentaire. Plutôt que d'avoir votre page de contenu utiliser un switch pour inclure le contenu, vous pouvez avoir un script distinct qui utilise un switch pour définir le contenu et le titre (et tout ce que vous pourriez trouver nécessaire).

$title = "KALASHNIKOV - " 
$include_page = "content.php" 
$content_page = "pages/404.php"; 
switch($area) { 

// The default page 
default: 
    $content_page = 'pages/main.php'; 
    break; 

// This is for registering an account 
case 'register': 
    $content_page = 'pages/register.php'; 
    break; 

// This is to log in!! (obviously) 
case 'login':  
    $content_page = 'pages/login.php'; 
    break; 

// This is for logging out 
case 'logout': 
    $include_page = 'logout.php'; 
    break; 

} 

require_once $include_page; 

content.php:

<html> 
<head> 
<title><?php echo $title; ?></title>  
</head> 
<body> 

<?php require_once $content_page; ?> 

</body> 
</html> 

alors logout.php appelleraient logout() et faire tout ce là, je ne sais pas comment vous manipulez cela.

Cette méthode permet également de mieux séparer la logique de la présentation, ce qui est toujours une bonne idée.