2015-05-12 100 views
1

我試圖通過PHP動態設置我的頁面標題。我的頁面標題位於每個頁面上包含的head.php文件中,因此單獨執行此操作不是一種選擇。動態頁面標題通過PHP

我寫了下面的代碼,我不明白爲什麼它不工作:

<?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> 

代碼工作設置「家」,而不是在任何其他人。如果我去invoice.php它仍然會在標題中顯示「Home」。

任何幫助表示讚賞。

+0

'開關($ _ SERVER [「SCRIPT_NAME」]){}'是理想的選擇。 – Devon

+0

直到現在還沒有想到使用開關盒功能。可以嘗試。謝謝。 –

+0

我從標題中刪除了已解決。接受答案會自動將其標記爲正在解決。發佈自己的答案,接受給定的答案或(標記)刪除問題。 –

回答

1

我刪除了一條線,得到它的工作。張貼在情況下別人的答案碰到過這樣的:

我刪除:

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> 
+0

你明白爲什麼修好了嗎? – Devon

+0

是和不是。我假設我的原始代碼嚴格匹配URL,並且由於每個頁面上的URL都是相同的,所以變量保持不變。 –

+0

你正在使用'else if'。所以一旦URL匹配,其他條件都不會被考慮,並且我認爲URL可以匹配任何頁面。 – Devon

2

兩個問題:

  1. $currentUrl.$currentpage將包含完整的主機名和查詢字符串,但你只覈對查詢字符串在你的if else
  2. 您的解決方案可能不會工作,如果URL有參數,例如/index.php?rel=xxx。嘗試使用$_SERVER["SCRIPT_NAME"]代替$_SERVER['REQUEST_URI']
+0

我用這個更新了我的代碼,它沒有工作。我將用新代碼更新我的問題,以便您可以查看一下,看看我是否正確。 –

+0

使用'var_dump($ currentpage)'打印'$ currentpage'的值,讓我知道你爲'invoice.php'得到了什麼 –

+0

string(12)「/invoice.php」 –

0

要單獨得到公正的文件,你可以使用:

$_SERVER['ORIG_PATH_INFO']; 

這是獨立的URL參數。它也獨立於包含並獲取您在地址欄中看到的信息。以下是一些結果:

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 = ""; 
+0

試過了。替換$ _SERVER [「SCRIPT_NAME」];與它並且拿出斜線,仍然沒有改變。它可能是別的嗎? –

+0

如果您所做的只是做出替換,您將看不到任何結果。查看我的更新開關/案例或字典選項。完全重做實施。 –

+0

'__FILE__'在這種情況下,我相信會返回head.php而不是index.php或其他。 – Devon