2011-06-24 54 views
5

所以我正在通過面向對象的PHP製作一個CMS腳本。無論如何,現在的問題是,我擁有物體的基本佈局,以至於我需要開始放置,我難以理解如何做到這一點。如何構建一個CMS?

我的本質是一個導航,數據,圖庫和模塊類。模塊代表頁面,類別等等。問題在於圖庫輸出圖像,模塊爲頁面提供數據,導航會創建(您猜測它)導航。你得到的照片。

在索引頁,我結束了實質上這樣做(這種情況將會改變,但它說明了我是如何開始對其進行設置):

$navigation = new Navigation(); 
$navigation->top(); 

$page = new Module(); 
$page->basicPage($_GET['m']); 

的basicPage()做了幾件事情,但主要是這個問題:

$gallery = new Gallery(); 
$gallery->setGallery($id); 
$gallery->thumbGallery(); 

等等等等。

問題在於,如果我調用basicPage(),設計者或誰對選擇有很少的控制權。正如你所看到的那樣,它是thumbGallery,並且不允許完整的圖像,它甚至不允許你設置縮略圖的大小(我確實允許它們做,只有當它們可以自己調用這個函數時) 。

所以我想到了一些解決問題的方法。我沒有這些基本頁面,但我有設計師像wordpress一樣構建模板。我不喜歡這個解決方案,因爲它使得設計過程變得複雜,儘管是徹底的。我不想這樣做,一切都被控制,並且是一種方式。當然,您可以將元素作爲設計師和其他一些技巧來「展示:無」,但我希望他們有能力做很多事情,而不需要使用Wordpress的複雜方式。

我的問題是如何在簡單和靈活性之間取得平衡?

任何幫助,甚至想法都表示讚賞。謝謝。

編輯:我忘了提及。問題在於,只有索引擁有所有這些數據,否則我將不得不做很多if/else等等,而且我真的不希望將其作爲一個程序性程序,只有一個你可以實際上只是一個plop東西放下,我們很好。看,模塊代表畫廊和頁面。大多數頁面不會附加圖像,而類別將包含圖像,但不一定是文本。如果我調用thumbGallery並且它只是一個信息頁面,並且如果我調用一個信息頁面並且它是一個類別,它將不會顯示圖像(以避免錯誤),它會導致錯誤。我可以,並已開始在所謂的基本頁面中構建它,但是我之前提到的問題是,它限制了設計者的自由程度,而不必惹php,而且大多數設計師都很笨拙到PHP,不幸的是。特別是面向對象(沒有冒犯性,我也是一名設計師,但是我也發生過程序)。

+0

看看[Front Controller](http://martinfowler.com/eaaCatalog/frontController.html)設計模式。 – Smurf64

回答

1

如果沒有看到代碼的其餘部分,就很難知道考慮到已有的最佳解決方案。過去9年來我從頭開始開發自己的自定義CMS應用程序框架,我很樂意爲您提供一些提示。

我假設您將所有CMS內容存儲在數據庫中。將庫設置的配置存儲在數據庫中可能是一個可能的解決方案。理論上你應該有不同的觀點(遵循MVC模式)以不同的方式展示畫廊。一個列表視圖,用於顯示多個圖像縮略圖,一個用於顯示單個圖像,另外還有一個可能列出類別的視圖。

因此,在數據庫中,您可以定義頁面X應該顯示縮略圖視圖而不是類別視圖。

不確定這是否是您遇到的問題的解決方案,但這是一個非常簡單的示例,顯示了我過去是如何在CMS中完成的。

+0

嗯,是的,我已經做了很多事情(頁面,類別)。但對於類似列表視圖的東西,這是我不需要存儲在數據庫中,而是可以在PHP中完成的。這是因爲類別的數據已經存儲在模塊表中,只需要調用並正確顯示(通過PHP格式化)。 我特別的問題主要在於設計師可以改變多少。例如,設計人員可能希望建立成爲網頁: 包裝{頭,導航,內容,頁腳} 或許: 包裝{左[頁眉,導航],右[內容],頁腳} –

+0

但是你的建議仍然很不錯,我感謝你的想法。也許根據我給出的解釋,你可能會更好地理解。問題是我希望製作模板的人能夠輕鬆地製作這些模板。 也許,也許......我認爲他們應該有選擇使用基本模板,但如果他們願意,他們可以更深入?你認爲這是可以接受的嗎? –

+0

這絕對是一個重大的設計決定。提供定製視圖的能力顯而易見。但是,該視圖是否可以針對視圖的每個實例進行定製?所以頁面A可以有一個類別列表與頁面B的類別視圖的自定義視圖?如何定義自定義視圖?如何做到這一點取決於您在CMS其他部分使用的一些決定和理念。我的CMS框架要複雜得多,並且允許通過數據庫和自定義視圖等進行相當多的定製。 – Percy