今天我們要介紹的主角是OctoberCMS,它是一款基於Laravel這個PHP開發架構的CMS系統。我猜你可能完全沒有聽說過它,如果你是個PHPer,可能會聽說過WordPress、Drupal、Joomla等等國外知名CMS,當然還有國內老牌的帝國、Dede,新興的禪知CMS等。如果你是個Rubist,想必聽說過RefineryCMS等。如果你是Noder,也有一些CMS系統,如KeystoneJS,Ghost可以勉強算一個。當然,即使在Erlang界也有它的高效能CMS系統Zotonic。
各種語言各種架構的CMS系統如此繁多,有的適合幾個頁面的小網站,有的適合上萬頁面的大型新聞站,有的適合公司企業展示,有的外掛程式豐富,有的易於擴充,有的代碼似漿糊,有的效能處處瓶頸。在這麼多的CMS系統中,其實最為常用的無非就那麼幾個,WordPress、Drupal。拋開一些國內新聞網站使用的久經考驗的國產CMS不說,WordPress最大的優點在於外掛程式豐富,幾乎你想要的任何功能都有人以外掛程式的形式提供,主流的雲端服務WordPress都有它們的外掛程式。但最大的缺點也恰恰是這個,由於曆史包袱太重,核心代碼無法輕易的修改,隨便一弄就是數以千計的外掛程式無法使用。打個比方,就像Windows作業系統,WinXP升級到Win7,多少軟體就不能用了,崩潰了,現在Win7升級到Win10,各種遊戲玩家都在紛紛罵娘。
Drupal VS Wordpress
Drupal像是WordPress的一面鏡子,幾乎處處相反。首先Drupal在安全性、可定製性、效能等方面都要遠超WordPress,但是後果就是Drupal的易用性遠不及WordPress。想要使用Drupal,首先需要瞭解一大堆Drupal的概念,更別提開發了,都得請專業人員,難怪別人都說Drupal更像是一個開發架構而非CMS系統,相比WordPress的各種鉤子外掛程式,Drupal的開發門檻顯然要高出許多。
其實,從Themeforest這個模板出售網站也可以看出各個CMS系統的流行程度,WordPress單獨佔一個分類,裡面有各種類型CMS的模板,而其他的CMS如Drupal和Joomla等,則歸為CMS一類。Drupal為瞭解決開發難的問題,在Drupal8中使用了Symfony這款PHP架構,原因是開發人員可以更好的遵循MVC的開發模式,並且能使用許多Symfony現成的類庫。
The PHP Framework For Web Artisans
關於Laravel和Symfony的比較可以看以下這些文章:[1] 最好的 PHP 架構是什嗎?為什嗎?[2] Symfony2到底比Laravel差在哪裡?
簡單的說,Symfony功能強大,企業級,但是學習成本高,Laravel借鑒了Symfony,功能強大並且更加易用。所以Drupal之於OctoberCMS就像Symfony之於Laravel。Drupal8功能強大,能夠實現你任何想要乾的事,但是對於中小網站來說就是大炮打蚊子,而OctoberCMS關注了CMS的核心功能,使用和擴充也不複雜。
下面,我們來正式介紹OctoberCMS了!
問:Github上stars數前三的PHP CMS系統有哪些?答1:WordPress! 對!它有7500個stars,但是它在Github上只是SVN同步源。答2:Drupal! 對!它排第三,有2250個stars。答3:納尼?那是誰?答4:OctoberCMS!對!它有4600個stars,實際上的第二,名義上的第一。
那麼一個CMS系統至少需要哪些功能或特性呢?
- 文章發布 - Wordpress的Blog Drupal的node
- 頁面發布 - Wordpress的Page Drupal的node
- 使用者系統 - 使用者註冊/登入
- 許可權系統 - 訂閱者/編輯/管理員
那麼一個比較完備的CMS系統還需要哪些功能或特性呢?
- 外掛程式系統 - 豐富的外掛程式
- 模板系統 - 可定製的模板或主題
- 緩衝系統 - 輕鬆地配置緩衝
那麼一個便於使用的CMS系統需要哪些功能或特性呢?
- 安裝部署方便 - Docker image
- 支援內建編輯 - 內部修改代碼
- 容易定製 - 容易寫外掛程式
好了,我們來「快速上手」吧!
1. 安裝Docker,OctoberCMS Docker Image
如何安裝Docker,DaoCloud可以參見這篇文章:使用DaoCloud安裝Docker和鏡像
然後使用dragontek/octobercms這個鏡像。
$ dao pull dragontek/octobercms
OctoberCMS支援多種資料庫,這裡以PostgreSQL為例,我們也下載好這個鏡像
$ dao pull postgres
有了這兩個鏡像,我們就可以快速部署了
$ docker run --name some-postgres -e POSTGRES_PASSWORD=example -d postgres$ docker run --name some-october --link some-postgres:postgres -d dragontek/octobercms
2. 後台一覽
我們可以通過localhost/backend登入後台,初始使用者名稱密碼均為admin,當然,如果你運行Docker鏡像時進行了修改的話,使用你-e環境變數設定的值。不過,運行後登入後台再進行修改也是完全可以滴。
Admin Backend
我們可以點擊右上方的Admin Person,在「後台設定」中設定語言為「簡體中文」。然後我們可以看到左側功能表列:
Backend Sidebar
在「更新」中,我們可以查看現在安裝的外掛程式和主題,並且可以搜尋新的外掛程式和主題。
Paste_Image.png
3. 部落格和頁面
版面設定,可以看到我們能夠直接在頁面中編輯代碼哦。這裡的代碼編輯器可不容小覷,可不是WordPress那樣的白板,這裡的編輯器基本是一個小型的Sublime Text,支援多選,列編輯,自動縮排,Emmet般的HTML/CSS自動補全,功能強大到爆炸!
當然,對於固定模板的頁面,October也提供了類似WordPress那樣輸入內容的頁面,這裡的Pages靜態頁面外掛程式也提供了靜態菜單Menus的製作。
關於部落格系統,我們只需要在後台外掛程式安裝頁面搜尋blog,然後點擊安裝即可。部落格的使用非常簡單,之後會詳細講述,你可以自己先試試喲。
4. 使用者登入和註冊
在使用者中心中,我們可以使用「組件」中的「帳號」來添加使用者登入和註冊頁面。
Paste_Image.png
添加後我們還可以修改成想要的樣式,比如由tab分隔成兩個子頁面。
使用者中心頁面
登入註冊頁面
使用者系統後台
在layout模板中,我們都可以添加組件中的session模組,來擷取登入後的使用者資訊。
5. 媒體
點擊頂部導覽列的媒體,可以看到October支援豐富的媒體屬性,如最常見的圖片、視頻、音頻、文檔等。
總體來說,我們可以看到OctoberCMS的後台功能相當強大,並且可以在後台進行代碼的修改。事實上,如果是常見的功能,我們完全不用編寫任何代碼,只需要使用正確的外掛程式和正確的配置即可。
What's NEXT ?
這篇文章只是對October進行了非常簡單的講解,之後會針對OctoberCMS一些最常用,功能最為強大的外掛程式進行詳細講解,千萬別錯過了喲!
你也可以在 https://octobercms.com/resources 中的 Screencasts 先行一瞥October的強大之處。