通过PHP动态页面标题
我正在尝试通过PHP动态设置页面标题。我的页面标题位于head.php文件中,该文件包含在每个页面上,因此单独执行此操作不是一个选项 我编写了以下代码,我无法理解它为什么不起作用:通过PHP动态页面标题,php,Php,我正在尝试通过PHP动态设置页面标题。我的页面标题位于head.php文件中,该文件包含在每个页面上,因此单独执行此操作不是一个选项 我编写了以下代码,我无法理解它为什么不起作用: <?php $currentUrl = $_SERVER['SERVER_NAME']; $currentpage = $_SERVER["SCRIPT_NAME"]; if("hoosiermommapcs.com"==$currentUrl) { $currentTitle = "Home"; } els
<?php
$currentUrl = $_SERVER['SERVER_NAME'];
$currentpage = $_SERVER["SCRIPT_NAME"];
if("hoosiermommapcs.com"==$currentUrl) {
$currentTitle = "Home";
}
else if("/index.php"==$currentpage) {
$currentTitle = "Home";
}
else if("/dispatch.php"==$currentpage) {
$currentTitle = "Request Pilot Cars";
}
else if("/invoice.php"==$currentpage) {
$currentTitle = "Submit Invoice";
}
else if("/gallery.php"==$currentpage) {
$currentTitle = "Image Gallery";
}
else if("/contact.php"==$currentpage) {
$currentTitle = "Contact Us";
}
$siteTitle = "Hoosier Momma Pilot Car Services | ";
?>
我的页面标题代码为:
<title><?php echo($siteTitle . $currentTitle); ?></title>
该代码用于设置“Home”,但不适用于任何其他代码。如果我转到invoice.php,它仍然在标题中显示“Home”
非常感谢您的帮助。有两个问题:
$currentUrl.$currentpage
将包含完整的主机名和查询字符串,但您只能在if-else中对照查询字符串进行检查/index.php?rel=xxx
,您的解决方案可能无法工作。尝试使用$\u服务器[“脚本\u名称”]
代替$\u服务器['REQUEST\u URI']
要仅获取文件本身,可以使用:
$_SERVER['ORIG_PATH_INFO'];
这与URL参数无关。它还独立于include,并获取您在地址栏中看到的信息。以下是一些结果:
URL RESULT
http://example.com/index.php /index.php
http://example.com/about.php?a=dsa /about.php
http://example.com/t/t.php?t=t /t/t.php
如您所见,这也与URL参数无关。从那里,您可以执行以下操作:
switch( $_SERVER['ORIG_PATH_INFO'] )
{
default:
$title = "";
break;
case "/index.php":
$title = "Home";
break;
case "/about.php":
$title = "About";
break;
}
或者,如果开关/案例令人生畏,您也可以使用字典:
$file = $_SERVER['ORIG_PATH_INFO'];
$titleDict = [
"/index.php" => "Home",
"/about.php" => "About"
];
if( array_key_exists($file,$titleDict) )
$title = $titleDict[$file];
else
$title = "";
我拆下一根线,让它工作起来。如果其他人遇到此问题,请发布作为答案: 我删除了:
if("hoosiermommapcs.com"==$currentUrl) {
$currentTitle = "Home";
}
并制作了我的代码:
<?php
$currentpage = $_SERVER["SCRIPT_NAME"];
if("/index.php"==$currentpage) {
$currentTitle = "Home";
}
else if("/dispatch.php"==$currentpage) {
$currentTitle = "Request Pilot Cars";
}
else if("/invoice.php"==$currentpage) {
$currentTitle = "Submit Invoice";
}
else if("/gallery.php"==$currentpage) {
$currentTitle = "Image Gallery";
}
else if("/contact.php"==$currentpage) {
$currentTitle = "Contact Us";
}
$siteTitle = "Hoosier Momma Pilot Car Services | ";
?>
标题:
<title><?php echo($siteTitle . $currentTitle); ?></title>
switch($\u SERVER[“SCRIPT\u NAME”]){}
非常适合此功能。直到现在才想到使用switch case函数。你可以试试看。谢谢。我把它从标题上删除了。接受答案会自动将其标记为已解决。发布您自己的答案,接受给定的答案,或者(将其标记为)删除该问题。我使用此更新了我的代码,但它不起作用。我会用新的代码更新我的问题,这样你可以看看我做得对不对。使用var\u dump($currentpage)
打印$currentpage
的var\u dump($currentpage)
值,并告诉我你从invoice.php
string(12)“/invoice.php”中得到了什么。在我看来他们是一样的。试试这个:var\u dump(“/invoice.php”=$currentpage)代码>导致bool(true)尝试了它。已替换$_服务器[“脚本_名称”];拿着它,去掉了斜线,仍然没有改变。可能是其他原因吗?如果你所做的只是更换,你将看不到任何结果。查看“我的更新”中的开关/大小写或字典选项。完全重做实现。\uuuu FILE\uuuuu
我相信在这种情况下会返回head.php而不是index.php或其他。你明白为什么会修复它吗?是和否。我假设我的原始代码严格匹配URL,因为每个页面上的URL都是相同的,变量也保持不变。您使用的是else if
。因此,一旦URL匹配,就不会考虑任何其他条件,我假设URL会匹配任何页面。@Devon是正确的,$\u SERVER[“SERVER\u NAME”]将始终是您的主机名,“hoosiermommapcs.com”假设这是您的主机,而不是您访问的完整URL。所以不管你访问哪个页面,$currentUrl总是等于“hoosiermommapcs.com”。是的,这就是我搞砸的地方。