【问题标题】:Dynamic Titles question动态标题问题
【发布时间】:2009-12-28 21:33:02
【问题描述】:
如何通过此设置获得动态(我认为就是这个词)标题?例如,当我查看个人资料时,我希望它在<title> 中显示正在查看 USERNAME 的个人资料。如果不在每个单独的页面上放置 html 顶部,我怎么能做到这一点?
非常感谢。
请不要开始谈论 mvc,我不需要那个
<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>
【问题讨论】:
标签:
php
include
switch-statement
【解决方案1】:
好吧,如果您不想将 HTML 放在每个页面的顶部,我假设您将它放在一个单独的文件中,例如 header.php,它应该看起来像这样:
<html>
<head>
<title><?= $page_title ?> - My Site</title>
</head>
然后在你的每个页面上,你只需要在包含它之前设置$page_title,就像
$page_title = 'My Page';
include 'header.php'
无论如何,这是解决问题的一种方式。
【解决方案2】:
每个子页面都应该执行以下操作:
<?php require('header.php') ?>
header.php 会有类似的东西:
<title>KALASHNIKOV - <?php echo $GLOBALS['pageTitle'] ?></title>
或者使用支持模板和sn-ps的zend framework
【解决方案3】:
我会在你的 php 文件的顶部创建一个这样的数组(可能太复杂但随着你的网站可能变得更大,这样解决它会更容易):
<?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];
?>
【解决方案4】:
把它放在你页面的任何地方:
<script language="JavaScript">document.title ="KALASHNIKOV - blablabla";</script>
【解决方案5】:
看起来您可以从额外的层中受益。与其让您的内容页面使用 switch 来包含内容,不如使用一个单独的脚本,使用 switch 来设置内容和标题(以及您可能认为必要的任何其他内容)。
$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>
然后 logout.php 会调用logout() 并在那里做任何事情,我不知道你是如何处理的。
这种方法也更好地支持逻辑与表示的分离,这总是一个好主意。