龔翔++張清
摘 要:該文介紹了基于ThinkPHP的CMS網(wǎng)站系統(tǒng)開(kāi)發(fā)優(yōu)勢(shì):網(wǎng)站能及時(shí)更新、具有個(gè)性和便于維護(hù)管理等,并設(shè)計(jì)開(kāi)發(fā)了一個(gè)基于ThinkPHP的通用CMS系統(tǒng)。該系統(tǒng)開(kāi)發(fā)技術(shù)包括:ThinkPHP、SMARTY模板引擎、靜態(tài)緩存技術(shù)、接口技術(shù)、偽靜態(tài)路由技術(shù);前端技術(shù):HTML、jQuery、Ajax、jsonp。該系統(tǒng)后臺(tái)以ThinkPHP為支撐環(huán)境,采用MYSQL 管理數(shù)據(jù)。實(shí)現(xiàn)了前臺(tái)和后臺(tái)松耦合管理,體系結(jié)構(gòu)靈活高效,系統(tǒng)安全性、可擴(kuò)展性和易維護(hù)性好。關(guān)鍵詞:CMS;ThinkPHP;SMARTY;AJAX
目前,各種組織通過(guò)互聯(lián)網(wǎng)開(kāi)展著多種多樣的業(yè)務(wù),并且業(yè)務(wù)的種類和規(guī)模還在不斷擴(kuò)大之中。同時(shí)信息系統(tǒng)的規(guī)模也越來(lái)越大,且信息的類型和存儲(chǔ)方式也五花八門,這使得系統(tǒng)的信息維護(hù)更加困難,迫切需要一種更加高效、平滑的管理方式來(lái)解決這個(gè)問(wèn)題。其實(shí)縱觀整個(gè)市場(chǎng)、基于一個(gè)組織的官網(wǎng)通常是一些純內(nèi)容展示網(wǎng)站。就拿大多數(shù)企業(yè)的網(wǎng)站需求來(lái)說(shuō),無(wú)非就是一些“公司介紹”、“產(chǎn)品展示”、“公司動(dòng)態(tài)”、“聯(lián)系我們”等這樣顯示內(nèi)容的頁(yè)面匯集而成的主頁(yè)。這些使得這種傳統(tǒng)的公司主頁(yè)技術(shù)上的重點(diǎn)轉(zhuǎn)移到了安全性和高效性上面。然而傳統(tǒng)靜態(tài)網(wǎng)站建設(shè)中存在很多問(wèn)題,所以本文為采用動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)+靜態(tài)緩存技術(shù)+偽靜態(tài)技術(shù)+數(shù)據(jù)庫(kù)技術(shù)為基礎(chǔ)的CMS(content management system,內(nèi)容管理系統(tǒng))[1],它能滿足大多數(shù)企業(yè)或?qū)W校網(wǎng)等組織純展示類網(wǎng)站快速建設(shè)需求。
1 系統(tǒng)框架
CMS系統(tǒng)基本思想主要是分離內(nèi)容地管理和設(shè)計(jì)[3],一個(gè)完整的CMS系統(tǒng)應(yīng)該包含:后臺(tái)業(yè)務(wù)子系統(tǒng)管理(可以針對(duì)不同系統(tǒng),方便管理者錄入相關(guān)內(nèi)容)、Portal系統(tǒng)(輸出頁(yè)面)、前臺(tái)發(fā)布(面向用戶的緩存發(fā)布及搜索引擎的Spider的URL設(shè)計(jì))、內(nèi)容管理和表現(xiàn)的分離(后臺(tái)各子系統(tǒng)的內(nèi)容管理邏輯和前臺(tái)的表現(xiàn)/發(fā)布分離)。
2 關(guān)鍵技術(shù)
2.1 ThinkPHP框架
ThinkPHP框架是MVC結(jié)構(gòu)的開(kāi)源PHP框架,遵循Apache2開(kāi)源協(xié)議發(fā)布,是為簡(jiǎn)化企業(yè)級(jí)應(yīng)用開(kāi)發(fā)和敏捷Web應(yīng)用而開(kāi)發(fā)的[4]。ThinkPHP擁有獨(dú)創(chuàng)的核心編譯和二分法項(xiàng)目編譯機(jī)制;內(nèi)置XML模板引擎,支持標(biāo)簽庫(kù);目錄結(jié)構(gòu)自動(dòng)創(chuàng)建;分布式數(shù)據(jù)庫(kù)支持;ActiveRecords模式和豐富的ROR特性;SEO和URL路由支持;AJAX支持;基于角色的權(quán)限控制體系;內(nèi)置了靜態(tài)緩存的功能,并且支持靜態(tài)緩存的規(guī)則定義。
2.2 靜態(tài)緩存技術(shù)
靜態(tài)緩存是在向數(shù)據(jù)庫(kù)插入新數(shù)據(jù)的同時(shí)生成靜態(tài)頁(yè)面并同步更新目錄頁(yè)面和相關(guān)索引頁(yè)上的鏈接,用戶在訪問(wèn)時(shí)只訪問(wèn)生成的靜態(tài)頁(yè)面。它的優(yōu)點(diǎn)是用戶在訪問(wèn)過(guò)程自始至終無(wú)需對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,效率高,缺點(diǎn)是對(duì)靜態(tài)頁(yè)視圖模板進(jìn)行修改時(shí),需要重新生成所有靜態(tài)頁(yè)面。
2.3 AJAX技術(shù)
AJAX指異步JavaScript及XML(Asynchronous JavaScript And XML),它的核心是JavaScript對(duì)象XmlHttpRequest。它的技術(shù)包括使用CSS和XHTML來(lái)表示、使用DOM模型來(lái)交互和動(dòng)態(tài)顯示、使用XMLHttpRequest來(lái)和服務(wù)器進(jìn)行異步通信、使用javascript來(lái)綁定和調(diào)用。它對(duì)服務(wù)器也沒(méi)什么要求,可以為Java EE應(yīng)用程序,.NET應(yīng)用程序和其他類型的應(yīng)用程序服務(wù)。通過(guò)Ajax,可以編寫javascript代碼來(lái)改進(jìn)HTML,創(chuàng)建出豐富的交互性用戶體驗(yàn)。
3 數(shù)據(jù)庫(kù)設(shè)計(jì)
本系統(tǒng)中數(shù)據(jù)庫(kù)表的設(shè)計(jì)為:管理員信息表包含管理員ID、密碼、等級(jí)、創(chuàng)建時(shí)間;文章信息表包含文章ID、標(biāo)題、內(nèi)容、作者、類型(圖文、圖片、文字)等;分類信息表包含分類ID、標(biāo)題、父類分類ID、類型等;網(wǎng)站信息表包含站點(diǎn)ID、網(wǎng)站名、內(nèi)容、序號(hào)等;鏈接信息表包含鏈接ID、標(biāo)題、網(wǎng)址、時(shí)間等;消息信息表包含消息ID、標(biāo)題、內(nèi)容、狀態(tài)等;首頁(yè)導(dǎo)航信息表包含標(biāo)題、網(wǎng)址、時(shí)間、序號(hào)等;界面設(shè)置信息表包含ID、分類ID、父類分類ID、文章ID、時(shí)間等。
4 系統(tǒng)實(shí)現(xiàn)
本系統(tǒng)的優(yōu)點(diǎn)是方便靈活、安全性高,能解決不同組織下的快速建站需求。應(yīng)用范圍廣,可以很好的應(yīng)用于企業(yè)門戶、學(xué)校主頁(yè)、團(tuán)隊(duì)展示、收藏品展示等。本文主要針對(duì)企業(yè)產(chǎn)品展示和學(xué)校精品課程網(wǎng)站進(jìn)行了實(shí)現(xiàn),學(xué)校精品課程網(wǎng)站前臺(tái)設(shè)計(jì)包括課程建設(shè)、教學(xué)內(nèi)容、教學(xué)資源、作業(yè)習(xí)題、考核、理論教學(xué)、主講教師、授課錄像和申報(bào)表等欄目(http://jpkc.lutcte.cn/plc)。企業(yè)產(chǎn)品展示網(wǎng)站前臺(tái)包括首頁(yè)、公司新聞、產(chǎn)品欣賞、洮硯百科、公司簡(jiǎn)介、聯(lián)系我們等(www.taoyange.com)。后臺(tái)管理界面如圖2所示。
5 總結(jié)
本文提出了基于ThinkPHP的CMS網(wǎng)站系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),大大提高了CMS 系統(tǒng)的軟件重用和開(kāi)發(fā)效率,并結(jié)合.NET技術(shù)提高了系統(tǒng)結(jié)構(gòu)優(yōu)化、代碼利用率和系統(tǒng)的安全性。本系統(tǒng)中主要包括內(nèi)容集成、內(nèi)容智能、內(nèi)容管理和內(nèi)容發(fā)布四個(gè)功能,并將其應(yīng)用到了學(xué)校和企業(yè)。在本系統(tǒng)中主要包括幾個(gè)重要模塊如新聞模塊、上傳和下載模塊、權(quán)限管理模塊。本系統(tǒng)具有很大靈活性且易于維護(hù)和集成,并通過(guò)偽靜態(tài)頁(yè)面技術(shù)保證了信息訪問(wèn)的安全性。