[英]Main menu in included php file
我正在基於twitter-bootstrap的網站上工作,並決定將頁眉和頁腳保留為網站每個子頁面中包含的單獨的php文件。 在我想將“活動”類添加到當前選擇內容(即用戶當前所在的頁面)之前,所有方法都運行良好。
我發現此腳本應該可以正常工作:
$("a").click(function() {
$(".active").removeClass("active");
$(this).parent("div").addClass("active");
});
但我意識到它僅適用於瞬間,然后我們返回到默認選擇菜單。 我檢查了頁面html,未添加類。 我意識到這是因為重定向到新網址后,正在加載新的header.php-因此未應用任何選擇。
關於如何解決的任何建議?
對於這種情況有一種解決方案。 無論何時呈現頁面,都應為該頁面添加一個標志名稱,並在頭文件中使用該標志條件,
例如,您有一個主頁,因此在渲染到主頁時,將home_page_flag傳遞為True或其中的任何值,只需在標題頁中添加一個條件(如果它是標題),然后在其中添加活動類。
<ul>
<li <?php if ($_SERVER['PHP_SELF'] == '[this_link]') { ?>class="active"<?php } ?>>
<a href="[this_link]">Home</a>
</li>
</ul>
語法可能是錯誤的,因為我不是PHP專家,該登錄名可以使用任何語言 由您的友好PHP鄰居解決-請使用您的實際href文本更改[this_link]
實例
只需執行以下測試,即可檢查從服務器全局返回的內容:
<?php echo $_SERVER['PHP_SELF']; ?>
即使您在本地主機上運行,只要您的本地服務器運行的是php版本4或更高版本,它都應該返回某些內容。
我的猜測是,如您的評論所述,它似乎“不起作用”的原因是,這將返回執行腳本的頁面的URL的域名部分之后的所有內容(即,不是您的include而是該頁面的實際頁面)將返回給用戶)。 因此,例如, http://example.com/foo/bar.php將返回/foo/bar.php 。 結果,這完全有可能不等於錨標記中的href。 例如,如果要從foo / foo.php鏈接到/foo/bar.php頁面,則可以使用類似路徑,例如href =“ bar.php”。 因此,如果您檢查$ _SERVER ['PHP_SELF']是否等於鏈接href,即使它們位於同一頁面,它們也不會相等。 說得通?
您沒有顯示站點或html的結構,因此本示例僅假設服務器的根文件夾中有兩個頁面(index.php和contact.php)。 它還假定菜單的html格式為div,其中包含每個菜單項的錨標記。
<?php
$currentpage = $_SERVER['PHP_SELF'];
$home = "index.php";
$contact = "contact.php";
?>
<div class="col-sm-2<?php echo ($currentpage == '/'.$home) ? ' active' : ''; ?>">
<a href="<?php echo $home; ?>">Home</a>
</div>
<div class="col-sm-2<?php echo ($currentpage == '/'.$contact) ? ' active' : ''; ?>">
<a href="<?php echo $contact; ?>">Contact</a>
</div>
那么,這是做什么的呢?
首先有一些變量:一個用於使用$ _SERVER ['PHP_SELF']的$ currentpage,另一個用於我菜單中的頁面鏈接。
然后在將要添加或不添加活動類的類的標記中,我將使用三元運算符-如果您不熟悉它們,那就像是if語句的簡寫。 語法如下:( 要檢查為true的東西 )? 如果是事實 該怎么辦:如果不是事實該怎么辦 ;
在這種情況下,我正在將$ currentpage值與$ home變量的值進行比較(以正斜杠開頭)(因此它與$ _SERVER ['PHP_SELF']返回頁面路徑的方式匹配)。 如果是真的,我會在空格旁加上主動一詞。 如果不是真的,並且這很重要 ,那么我只用一個空字符串就什么也沒有呼應。 與if語句相比,這是三元運算符的特殊之處,您必須在“ else”情況下包括要做什么。
這幾乎就是全部。 唯一的另一件事是我在href屬性中使用了頁面url變量。
好的,這就是我要做的,但是我只想提到有很多其他方法可以做到這一點。 例如,您可以在javascript或jQuery中做類似的事情。 在這種情況下,您只需要在每個使用window.location.pathname的頁面上包含一個腳本,並使用switch語句來確定應該將活動類添加到哪個鏈接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.