2012-12-12 101 views
2

下面是我如何獲得文件以及他們做什麼的粗略畫面。將背景代碼與HTML顯示代碼分開的好方法是什麼?

index.php在開始時會顯示開始的HTML標籤幷包含header.php(鏈接的div),最後包含顯示結束HTML標籤的footer.php。 在此之間,index.php從GET參數,POST表單等獲取所有用戶輸入,並從數據庫獲取數據( functions.php和mysql_functions.php)。爲了顯示主體內容,它包括基於用戶請求的任何頁面的PHP模板文件,例如: index.php?p = page1包括 template_page1.php

的信息將顯示在模板文件存儲在一個陣列,而不只是簡單的變量,所以在模板然後我有什麼看起來是這樣的:

<title><?php echo $content['page_title']; ?></title> 

而且

<div> 
    <?php 
     foreach($name as $content['names']){ 
      echo '<p>'.$name.'</p>'; 
     } 
    ?> 
</div> 

模板文件中沒有真正的重碼,只有循環和基本的if語句。重要的東西在index.php和函數文件中完成。

有時我覺得儘管它可能是黑客和雜亂的,而不是一個很好的做事方式。我前幾天看了一個模板系統(Code Igniter),它看起來很複雜,有很多不同的文件只是爲了顯示一些內容而改變。

我只是有一些批評和我正在做的方式的一些利弊和一些想法,我怎麼可以更好地做到這一點?

+0

我不知道代碼點火器,但它似乎真的不同於其他模板系統。你應該看看Smarty。 –

回答

0

你是對的。將很多代碼堆疊到一個文件中是不好的做法。但是,如果你是一名PHP初學者,那麼你現在不應該太擔心。我不能完全描繪你的文件結構,但我認爲我有一個想法。

嘗試將每個PHP函數和其他文件中的內容都放在index.php中儘可能少地使用PHP。儘管如此,請確保您沒有太多不必要的文件(每個事件/函數都有一個文件)。

0

至少有一個測試版本的模板工具包在PHP中完成。但是perl中的原始語言實質上是一種不同的語言。它非常強大。

原來是在CPAN上。我認爲目前的版本是2.25。

我的網站建設系統的內容和標記幾乎完全分離。

這是內容除了之前的基本頁面:

[% PROCESS header.inc 
    Title = "Sherwood's Forests -- Seedling Sales" 
    Desc = "Sherwood's Forests Pre-season orders for little Trees." 
%] 

<DIV id="content"> 
[% FILTER multimarkdown %] 


# Seedling Sales 2014 

<div markdown="1" class=picr> 

![Picture alternate text][/base-absolute/path/to/image.jpg] 

</div> 

Please be patient 

#### This file is still germinating 


[% PROCESS Copyright.inc %][% END %] 



</div> 
[% INCLUDE footer.inc %] 

所有內容那張FILTER線和底部的內容寫在降價之間。允許我在列的右側浮動圖像。 CSS完全是液體,因此屏幕在iPhone上仍然可用(幾乎不可用)。

大部分的魔法都在header.inc中。它讀取一個文件fileindex.txt,它實際上是整個網站的菜單樹。沒有Java。所有靜態網站。

Fileindex。文字是這樣的:

ABBAB:f:/Home/Business_Stuff/Inventory.html:3:Inventory.html:Inventory 
ABCAB:f:/Home/Business_Stuff/Ordering.html:3:Ordering.html:Ordering 
ABDAB:f:/Home/Business_Stuff/Prices.html:3:Prices.html:Prices 
ABJAB:f:/Home/Business_Stuff/Business_Stuff.html:3:Business_Stuff.html:Business Stuff 
ADAAA:d:/Home/Services:2:Services:Services 
ADJAB:f:/Home/Services/Christmas_Trees.html:3:Christmas_Trees.html:Christmas Trees 
ADKAB:f:/Home/Services/Custom_Growing.html:3:Custom_Growing.html:Custom Growing 
ADLAB:f:/Home/Services/Nature_Walks.html:3:Nature_Walks.html:Nature Walks 

字母湯一開始決定了指數的排序順序。 d或f是目錄或文件。數字是它在菜單層級中向下的層數。然後完整路徑的文件組件。最後是用於鏈接名稱的文本。其中一些從早先的重寫中重新獲得,但不值得修復。 「不要優化它」。最後一個字段允許使用與文件名不同的鏈接名稱。這個用處不大。

fileindex.txt本身是由perl程序生成的MakeFileIndex。它使用兩種信息來源:查找結果。在源代碼樹上運行,以及一個文件tt2seq,它具有可選的覆蓋菜單項順序。

我想向我的網站添加一個新頁面。

將第一個文件複製到相應的目錄。用我的新內容更改該文件的內容。如果它需要以非字母順序出現,那麼我必須添加行到tt2seq來控制它。運行MakeFileIndex。運行ttree -a(模板工具包中的實用程序)這會更新每個文件中的所有菜單項。

確認頁面看起來像我想要的。如果不是,則重新編輯。重新運行我剛編輯的文件的ttree。當我很高興時,同步到我的服務器。實際上,我花在機械上的時間與寫作所花費的時間相比是微不足道的。

如果我決定重新安排網站,我只是在目錄樹周圍移動文件,然後重建。這不會修復內容塊中的任何內部鏈接。

這種方式生產的網站是http://sherwoods-forests.com。這是一個老式的網站。重點是內容,而不是嘶嘶聲。但是這是一個生成靜態頁面的好系統。