2011-01-10 93 views
4

我創建了CMS一個相對簡單的網站 - 投資組合,一些常規內容頁,自定義博客等CMS的設計模式,並考慮

什麼是一些最好的模式潛入設計之前要考慮的。

我希望系統儘可能靈活而不會太複雜。

我已經找了一些很好的資源,討論cms和博客設計,但找不到太好的東西。

我的語言是PHP,但我想我正在尋找更多的語言獨立的建議。

+1

其他答案暗示「不要自己寫」是合理的,但是,爲了學習而爲自己建立任何項目是一個非常好的主意。我建了一家電子商店,我不再使用它,但我學到了很多! – 2011-01-10 21:41:56

+0

意圖是高尚的,但你必須問自己,你爲什麼要這樣做?如果你真的很樂意編寫代碼,那麼我應該建議你看看一些好的東西,比如SOLID原則,數據存儲,開始瀏覽衆所周知的框架等等。但是!如果你想要擁有市場並讓所有其他人失望,只是通過,你將無法一個人做到這一點。 – Pierre 2011-01-11 09:16:21

回答

0

現在,編寫自己的CMS是一個可怕的時間浪費。通常的開源解決方案 - 現在Joomla,WordPress和Drupal很受歡迎 - 都是由成千上萬的人撰寫的,雖然你可能會因爲使用它而失去一點靈活性,但這已經被不需要重做所有東西刮。如果您使用Drupal,您還可以享受高質量,大規模擴展等代碼:)

+1

系統必須自定義。現貨供應不存在問題。我很舒服的編程,將使用mvc框架。我正在尋找關於cms的實際設計的一些很好的建議。必須有一些用於簡單cms的一般良好做法等。 – David 2011-01-10 20:40:51

2

一個很好的模式是模型視圖控制器模式或MVC。 此模式建議在下列層中分離應用程序的邏輯:數據邏輯(模型),操作或業務邏輯(控制器)和顯示邏輯(視圖)。

這是一個很好的模式,因爲您會一直遇到其他問題(以及模式)。 以下網站很好地解釋了MVC的概念:MVC Principles

1

除非您試圖改善它,否則毫無意義重新發明車輪。

已經有很多CMS可用了。我個人曾與ezpublish合作。還有其他選項,如Drupal等。這是所有開源CMS的列表可供 - Click here

如果你只是想學習,那麼你也許可以選擇任何一個流行的開源並找到它的工作建築和設計。

此外,我不認爲任何人都可以給你一個最適合CMS工具的設計模式列表。因爲每種設計模式都可以解決某些特定問題。而且,您只需根據您希望在項目中解決的特定問題選擇設計模式即可。

-1

如果您的需求是組合,一些一般的內容頁面,只有自定義博客,WordPress的將是簡單和更好。

在PHP這麼多的CMS可用,最流行的是Joomla

11

靈活性沒有複雜性...漂亮的程序。

也許你是一個天才,你會做出你需要的東西。但我認爲你將面臨的最大問題是安全性健壯性。所以,真的,在這個頁面上採取其他建議,並看看wordpress,drupal,joomla和ezpublish。很多安全措施已經完成。而不僅僅是安全...

因此,研究一些這些工具,跟蹤他們的缺陷,檢查他們的安全策略。研究他們如何處理緩存,會話,引導,絕對&相對url管理,文檔(圖像,視頻等),ajax,認證,識別,acl,用戶界面,富文本編輯,遷移,模板,頁面組合,內容過濾(我嘗試去除你不需要的東西,插件,數據庫抽象,優良的緩存,CSS和js縮小,單個實例簡單CMS不需要的所有超複雜的東西)。很快你會得到他們所做的東西的「圖片」。

通過這樣的工作,你一定會注意到一些重大的差異和錯誤。你會開始討論irc和火紅的開發者,告訴他們其他人已經做出了更好的選擇。你會開始忘記刮鬍子。你可能會做一些貢獻。有些會被接受,有些則不會。當有人解釋他們爲什麼會犯錯誤(他們犯錯誤)時,老核心開發人員不喜歡。

現在,來一天你有一個鬍子。你的一些貢獻將開始看起來像叉子。你會有敵人,朋友或追隨者。你會開始感受到力量。

然後你會繼續irc並告訴上帝這個世界是醜陋的,而且你會製造出第一個靈活而不復雜的CMS。人們會哭泣。鳥兒會繞圈跑。您將能夠解釋CMS的設計模式。

  • 我是用戶。我知道我想要什麼。做我想做的事會讓用戶開心。我很高興。
  • 你不得與眼鏡
  • 「MVC MVC MVC」,從人們信任代碼:和人民的響應是「是必做」

認真,還是有一個好的CMS與地方顛覆性的創新,叉歷史很久以前開始與phpNuke(據我記憶)。但是一些實際的產品對於大多數任務來說確實很好。

4

我可能冒着這裏的風險,但我的經驗表明,構建自己的CMS可能是一個非常合理的決定,特別是當您熟悉當前的開源系統並且瞭解它們在功能,安全性或者什麼不是。開源通常意味着很多向後兼容性問題和難以改變的糟糕架構決策。

我強烈建議您不要僅僅考慮MVC,而要看看能讓它變得有吸引力的想法。

CMSes的一個主要問題是涉及驅動動態網站的技術範圍:邏輯的命令式php,數據查詢的聲明式SQL,接口的標記HTML,動態接口的命令/功能javascript,Ajax調用的JSON爲了保持系統的可管理性,您必須將這些技術保存在一個受控制和易於理解的環境中,但仍然可以實現順利的集成。知識和最佳實踐在那裏。 MVC只是解決這個問題的一種方法。

我的選擇在當時是使用以下原則:

  • 靜態調用面向對象的代碼(PHP是一個經營的東西,代碼對象的許多情況下是很少有道理的),除了什麼在全球範圍內的初始化代碼一行
  • 100%代碼設計的分離與使用XSLT和定製內容處理器的
  • ,可以採取任何HTTP請求,並將其重新路由到註冊方法
  • 定製內容處理器
  • 定製路由器可以採取ar並且根據請求參數(即,文件名)將其轉換爲諸如xhtml,xml,json等任何可用格式。 http://local/class/method.xhtmlhttp://local/class/method.json)爲
  • SQL查詢構建器(選擇用於在ORM靈活性)的所有數據庫儘可能多的虛擬Web服務器的代碼
  • 一個副本查詢
  • 方法輸入的強制過濾與filter_ *函數

我相信你可以選擇一些你喜歡的東西:)祝你好運!