2010-06-12 101 views
1

不是一個coldfusion特定的問題,所以你可以回答。構建自定義CMS,如何處理頁面設置?

我繼承,其中在每個頁面的頂部不同頁面設置特定的變量設置一個ColdFusion項目,如:

<cfset request.page.title = "Example Page"> 
<cfset request.page.machineTitle  = "example_page"> 
<cfset request.page.isJQueryEnabled = 1> 
<cfset request.page.showNavigation = 1> 
<cfset request.page.SWFObjectVersion = 2.2> 

我想只有

創建數據庫表
integer page_id 
varchar key 
varchar value 

我會將每頁頂部的變量減少到頁面ID,然後調用DB進行正確的設置。

這是個好主意嗎? 我討厭重新發明輪子,但這是一個非常大的項目,需要數月的時間才能完成向CMS的內容遷移。

當前存儲頁面設置的做法是什麼? (例如,是什麼WordPress的嗎?Drupal的?等等)

---- ----編輯

增加新功能/頁特定腳本變成了一場噩夢,因爲我不得不打開每個文件和添加/編輯/刪除一個變量。沒有辦法知道哪些頁面正在使用哪些變量而無需打開它們或使用命令行(我確信會給其他開發人員帶來不便)。

另外,當我收到一堆陳舊的變量時會發生什麼?例如,最終「usePrototype」變量將被淘汰,整個網站將使用jQuery。

另一種方法是創建一個包含設置這些變量的巨型開關塊的文件。這已經完成了一些事情(例如元標記 - switch on request.page.machine title, case xxx <meta tag whatever>)。一團糟。

+0

你想解決什麼問題?目前的方法有什麼問題?重構所有現有的(工作)頁面以使用不同的方法會給您帶來什麼樣的好處? – 2010-06-12 22:00:32

+0

在eclipse中,您可以搜索並以秒爲單位替換所有出現的字符串。我會把它放在Application.cfc中的onRequest方法中。每次調用數據庫獲取SWFObjectVersion對我來說似乎都有點兒麻煩。 application.config.request.SWFObjectVersion是其中一個選項。 – 2010-06-13 09:02:24

回答

1

如果我明白你的建議,你有一堆頁面有一行設置頁面標題。您希望爲每個頁面分配一個標識號,然後從頁面中刪除頁面標題,然後將其存儲在數據庫中。當用戶請求該頁面時,而不是僅使用頁面中的頁面標題,而是必須按頁面標題的編號查詢數據庫。

如果這是你的建議是什麼,那麼結果將是:

  • 更長的頁面加載時間
  • 提高數據庫的利用率和爭
  • 降低代碼的可讀性(頁面標題可以」如果沒有在表格中找到它)
  • 錯誤的可能性增加(編輯表格時很容易將第45頁誤認爲第54頁)。

這會讓事情變得不太清晰,而不是更清楚。

我無法對Drupal說話,但Wordpress會將整個頁面(或文章)與其他元數據一起存儲在表格中。 Wordpress會將表中的數據與一組模板文件結合起來,並向用戶返回一個壓縮頁面。該表格將具有數字鍵,但也有其他非主鍵數據可用於定位給定頁面(標題,段落,類別,標籤,日期等)。)

+0

好的,你列出的結果不應該太大,以免影響網站的性能,所以我可能會繼續。謝謝。 至於識別我正在編輯哪個文件,文件路徑/名稱/和內嵌評論標題就是這樣做的。我還會創建一個簡單的頁面管理器來顯示頁面標題,可能會影響它的url,以及輸入/複選框來切換變量並添加新變量。 – davidosomething 2010-06-13 06:16:07

1

在CF中,您有超酷的Application.cfm(傳統)或Application.cfc(現代)模板。他們是全球性的。他們很強大。他們很靈活(cfc更多)。

  • 您可以從數據庫中拉出全局設置並存儲到應用程序範圍中,以便快速重複使用。
  • 您可以讀取每個請求的每頁設置並將其放入所需的範圍request.page
  • 您甚至可以讀取所有頁面的信息(使用CGI範圍來查找當前頁面)並將其緩存在應用程序範圍(或內置緩存系統中 - 可用於CF9和Railo)。
  • 您可以暫時緩存已訪問頁面的信息以便快速重複使用。
1

從Db調用並不是一個壞主意,因爲您將集中配置。這取決於你的設置,但Coldfusion應該能夠應付這樣的負載。

調查Application.cfm或Application.cfc - 當包含在文件夾的根目錄中時,這些文件中的代碼會在頁面運行前被調用。因此,他們可以包含常見任務,例如加載這些變量。 (Application.cfc稍微複雜一點,但也可以在頁面運行後執行清理工作)。

您可能可以執行以下操作來節省一些時間。使用onReqestEnd方法創建Application.cfc文件(需要ColdFusion MX7或更高版本)。在該方法中包含將當前設置的頁面變量保存到Db的代碼(如果以前未保存)。如果頁面還沒有ID,則可以使用CGI.varibles來取回當前的URL。然後,當人們查看這些頁面時,它們會自動保存到Db中。點擊該網站以確保一切都被保存。安裝代碼以在App.cfc onRequestStart方法中取回配置,並執行正則表達式查找並替換以終止所有內聯設置。

相關問題