2011-05-08 80 views
0

ASP.Net的好處之一是能夠設置一個site.master文件,該文件包含來自網站的所有重複的HTML /代碼,並且仍能夠從單個網站頁面更改它的內容。 (例如,更改每個頁面的<title>標記或將其他內容添加到文檔的<head>中。)相當於site.master的PHP?

在過去的PHP中,我使用服務器端包含來刪除重複的HTML /代碼(例如文檔頂部,主導航,頁腳等),但很顯然,您無法更改頁面中的任何內容。

有什麼辦法可以在PHP中實現site.master類型的功能嗎? 如果不是,刪除重複的HTML /代碼,同時仍然可以更改頁面標題,突出顯示的導航等內容的最好方法是什麼?

謝謝。

+0

Smarty的......... – dynamic 2011-05-08 17:25:29

回答

2

提取常見碎片的最簡單方法是使用require(),這將允許您在當前文件中包含其他文件。

的如何使用它的一個例子:

的header.php - 一個可重用的片段

<div class="header"> 
    <h1><?= $pageTitle ?></h1> 
</div> 

pageContents.php

<body> 
<?php 
$pageTitle = 'Check it out, the Foobar page!'; 
require('header.php'); 
?> 
blah blah 
</body> 
+0

你閱讀問題正確? – 2011-05-08 17:53:25

+0

是的。你需要的片段不需要是靜態的。 「顯然你不能改變頁面中的任何內容」是錯誤的,你可以在父頁面中定義變量,並讓它們在子頁面中回顯。 – 2011-05-08 18:59:59

+0

你能否給我一個答案的例子,因爲我不明白你如何使用require()來引入每個頁面的頂部(例如),但是然後改變頁面的標題。謝謝。 – 2011-05-08 19:06:08

0

沒有這樣的功能在PHP中,您可以將組件移動到單獨的文件中,並使用01將它們包含在主文件中或require函數。

雖然有些框架確實提供了(模擬)這樣的功能。例如在cakePHP中,您可以有一個佈局文件,您可以在其中輸出頁面。

4

這就是所謂的模板引擎,並有大量的PHP引擎。

Smarty的是他們

+0

感謝您的回答。這顯然是一個非常普遍的需求。大多數程序員在使用PHP創建站點時使用模板引擎嗎? – 2011-05-08 18:12:45

+0

從我所做的研究看來,大多數程序員不喜歡使用Smarty或其他模板引擎,因爲PHP已經足夠好了。 – 2011-05-08 18:23:36

+0

@django:大多數程序員** LIKE **使用模板引擎,現在如果它很聰明或者沒有什麼問題。你的研究技能失敗了xD – dynamic 2011-05-08 18:32:01