2011-08-02 174 views
0

所以我相信我以前的問題是完全錯誤的,我想要什麼。我很抱歉。PHP模板幫助

無論如何,這裏是我相信構成我的問題的問題:我目前正在使用PHP模板(我相信這是正確的措辭)。它被命名爲「index.php」,它包含我的佈局以及下面的代碼,該代碼從名爲/ content /的目錄中調用正文的內容,例如「關於」「聯繫人」等。

<?php 
$default = 'index'; //Whatever default page you want to display if the file doesn't exist or you've just arrived to the home page. 
$page = isset($_GET['p']) ? $_GET['p'] : $default; //Checks if ?p is set, and puts the page in and if not, it goes to the default page. 
$page = basename($page); //Gets the page name only, and no directories. 
if (!file_exists('content/'.$page.'.php')) { //Checks if the file doesn't exist 
    $page = $default; //If it doesn't, it'll revert back to the default page 
    //NOTE: Alternatively, you can make up a 404 page, and replace $default with whatever the page name is. Make sure it's still in the inc/ directory. 
} 
include('content/'.$page.'.php'); //And now it's on your page! 
?> 

上面的編碼是我的模板的index.php頁面中,這稱之爲正文內容,如我前面提到的,如「關於」,「聯繫人」,等等。現在我的模板的頁面的index.php從'/ content'目錄調用默認頁'index.php'。不過,我希望我的主要index.php(不是從/ content /中調用的)與我的其他站點有不同的佈局。我如何實現這一點,同時仍然能夠使用上述編碼來利用不同佈局的內容?

...這有意義嗎?或者我只是在胡說八道? - 幫助將非常感激。

+0

不,這不是一個模板,如果有什麼我會稱之爲控制器。模板是html和變量(無控制邏輯)。閱讀MVC範例 - 這是C層,模板是V層。 –

+0

好的,只是這樣我就不必在每一頁上都更新佈局,而且我可以從一個文件控制佈局。所以我想這是一個控制器? –

+0

佈局從哪裏來的?您需要在那裏應用一些處理程序邏輯,例如根據您所需的條件交換樣式表。以上代碼僅加載內容文件,並且本身不能根據需要進行調整。 [另外。](http://meta.stackexchange.com/q/5234) – mario

回答

0

整個頁面的佈局有所不同嗎?或者頁眉和頁腳與網站內容的變化保持一致?

如果是後者,你可以用2個文件(比如「header.php」和「footer.php」)包含你的頭文件代碼和頁腳代碼,並且你有一個內容div它們之間。您可以根據您所在的頁面打印任何需要進入內容div的內容,與您上面設置代碼的方式類似。

這有道理嗎?所以,你有三種不同的包含文件,一個頭,一個用於頁腳和一個用於頁面內容(取決於你在做什麼頁)

+0

頁面佈局完全不同。這是我的問題。包含頁面內容的主體沒有側邊欄,它只有一個大的div容器,並且此更改的背景圖形。 –

1

簡單地做一個條件:

if ($page == $default) { 
    //different layout 
} 
else { 
    .... 
} 
+0

對我有意義 –

+0

我如何在編碼中實現這一點?對不起,我不是PHP的專家:S –

0

如果我理解你,你只是想從根index.php切換佈局,如果有人點擊你的鏈接,你會傳遞一個「p」參數到根index.php,它通過從/內容文件夾。

<?php 
    if(isset($_GET['p'])) { 
     $default = 'index'; 
     if (!file_exists('content/'.$_GET['p'].'.php')) { 
      $page = $default; 
     } 
     $page = basename($page); 
     include('content/'.$page.'.php'); //And now it's on your page! 

    } else { 
      // your root index.php 
    } 
?> 

把它放在你的根index.php的頂部,並在else條件下建立你的根index.php站點。

+0

對於你的代碼,我得到:「解​​析錯誤:語法錯誤,意外的第2行」 –

+0

是的,我的壞是累了:有一個)缺少:if(isset($ _ GET ['p'])){ – Talisin