2014-09-11 50 views
0

我正在創建我的第二個網站,並希望使用PHP,因此我可以輕鬆地對每個頁面的頁眉和頁腳進行更改,而無需更改40多頁。PHP頁眉和頁腳困惑

我明白你做了一個header.php頁面和一個footer.php頁面,然後使用include將它放到你正在創建的任何頁面中,但是我不想讓頭文件包含文檔類型或標題標籤或任何東西,如果你喜歡,我只想要標題的「body」部分。每個頁面上的實際標籤都需要分開,因爲這似乎是將頁面標題保留爲每個頁面最簡單的方法,這可能嗎?我瀏覽過網頁,大多數人建議使用一些php代碼來改變每個頁面的標題,這似乎是一種解決方法,而不是首先實際防止問題,任何想法?

感謝

+1

那麼你現在的結構和代碼是什麼樣的? – 2014-09-11 08:56:56

+0

這是一種方法。我總是使用Smarty,因爲我喜歡使用模板塊和擴展布局的系統。 [Smarty {block}](http://www.smarty.net/docs/en/language.function.block.tpl) – 2014-09-11 10:32:19

+0

可能讓我聽起來愚蠢愚蠢,但基本上我編碼了整個這個網站的主頁,本質上只是HTML和CSS - 現在我只是在分解頁眉和頁腳。 – 2014-09-11 12:03:58

回答

1

很簡單的丹尼爾,你可以選擇你想要的任何地方所包含的文件。

例如:

<html> 
<head> 
    <title>This is your title pages</title> 
    <meta>This is your individual page meta data</meta> 
</head> 
<body> 
    <?php include 'header.php' ?> 
    <h2>This is your page title</h2> 
    <p>This is your page content</p> 
    <?php include 'footer.php' ?> 
</body> 
</html> 

而且你的頭文件看起來是這樣的:

<header> 
    <h1>This is your Site Title</h1> 
</header> 

,同樣你的頁腳:

<footer> 
    <p>Your copyright info</p> 
</footer> 

這使得頭包含的文件沒有實際head標籤,這是我認爲你感到困惑的地方。

希望是有道理的。

更新:所以在我的例子,實際的編譯輸出將呈現這樣的:

<html> 
<head> 
    <title>This is your title pages</title> 
    <meta>This is your individual page meta data</meta> 
</head> 
<body> 
    <header> 
     <h1>This is your Site Title</h1> 
    </header> 
    <h2>This is your page title</h2> 
    <p>This is your page content</p> 
    <footer> 
     <p>Your copyright info</p> 
    </footer> 
</body> 
</html> 
+0

謝謝李,很好解釋。所以基本上我可以使用PHP將'代碼片段'放在頁面的任何位置? – 2014-09-11 12:06:19

+0

是的,在一個非常基本的形式。這就是包含的內容。主文件讀取'include'行,基本上將包含文件的內容編譯到include所在的位置。 – Lee 2014-09-11 12:09:51

2

這不是一個解決辦法,它只是實現它的最簡單方法。當然,你可以放一些邏輯,並在header.php中包含額外的文件,標題和特定頁面的東西,但爲什麼讓你的生活變得更難?

<?php 

$title = 'My Title'; 
$stuff = 'Some random stuff'; 

include('header.php'); 

然後在header.php中你有

<?php 

... 

<title> 
    <?php if(isset($title)) echo $title; else echo 'Generic Title'; ?> 
</title> 
-1

我已經運行「製作網站」的全域並沒有得到認真與頁眉/頁腳直到我開始使用WordPress框架。那是在手動編碼兩個CMS和一個我自己的電子商務套件之後。 :\我喜歡@ mariobgr的回答,這是向某個網站的模塊化構建方面邁出的第一步。

我認爲你正在尋找的是更多的頁面/容器/內容的答案。 header.php通常是關於HTML標頭,URL/POST/GET驗證和安全性的。有時候JavaScript也在那裏。通常,header.php將不具有<body><HTML>標記,那些標記更多。現在你打開了這個概念,我建議你已經準備好了CMS;像wordpress:個人內容是在MySql數據庫中,然後你有一些文件來處理你的網站頁面上的各種功能角色。

一種無關的,但另一個例子包括:我最近的非正式「框架」是一個非常重要的銷售報告生成器工具。這是一個示例層次結構;壓痕與各include

index.php 
    db.php   // connects to database 
    inc.js.php  // everything that's in <script> tags 
    inc.container.php  // isn't actually a page, is 1/3 page wide 
     class.dates.php  // meh, should be miraculously built in 
     inc.post.php  // POST processing to prefill form variables 
     inc.controls.php // Form w/buttons to change report info 
     inc.query.php  // epic MySql query 
     inc.report.php  // Churns the query data and spits out tables 
     inc.graph.php  // graphs data from above via CSS backround 
css/   // this is for jQuery 
js/    // this is for jQuery 
reports.css  // this is for me 

在現實中,什麼開始作爲一個頁/ index.php成爲inc.container.php然後我改變index.php,以便它可以具有相同的網頁上多個報告「頁面」。

我不是很面向對象,所以我在index.phpcontainer.php中包含了我需要的所有東西,即使這些公司包含更深層次的東西。幾個關鍵變量在全局範圍內,但container.php具有驅動邏輯的狀態機。它基本上就是「頁面」,即使我已經格式化了CSS打印介質,並在兩行之間執行3。

jQuery/Ajax可以通過每個容器內的控件動態添加和刪除更多的容器,所以這很有趣。這可以很容易地比較類似的時間段或跨越幾個月,季度等報告。這個技巧是增加一個全局JavaScript變量,所以jQuery知道哪個div ID添加或殺死。

+0

geez,至少給-1的反饋。由於這個問題在我撰寫我的作品時得到了兩次回答,所以我將它改爲具有更高層次的更多哲學感。 :P – 2014-09-11 18:37:42