明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

用Yaapi與PHP構(gòu)建一個(gè)容易的內(nèi)容管理系統(tǒng)

[摘要]如果你是一個(gè)正在構(gòu)建具有豐富內(nèi)容的Web網(wǎng)站的開發(fā)人員,你就可能需要考慮下面這些解決方案,其中包括(a)用于內(nèi)容的數(shù)據(jù)庫,(b)將GUI與內(nèi)容分離的模板系統(tǒng),(c)用來維護(hù)數(shù)據(jù)庫里數(shù)據(jù)的用戶友好界面...
如果你是一個(gè)正在構(gòu)建具有豐富內(nèi)容的Web網(wǎng)站的開發(fā)人員,你就可能需要考慮下面這些解決方案,其中包括(a)用于內(nèi)容的數(shù)據(jù)庫,(b)將GUI與內(nèi)容分離的模板系統(tǒng),(c)用來維護(hù)數(shù)據(jù)庫里數(shù)據(jù)的用戶友好界面,以及(d)對(duì)所生成頁面的最終外觀的控制。



能夠提供上述所有內(nèi)容的一個(gè)非常有趣的解決方案就是Yaapi,它是“你的文章應(yīng)用程序編程接口(Your Article Application Programming Interface)”的開頭字母縮寫。它是一個(gè)PHP類,提供了內(nèi)置的方法來訪問保存在數(shù)據(jù)庫里的內(nèi)容。管理模塊裝備有協(xié)助管理數(shù)據(jù)的類,而這個(gè)API本身都足夠強(qiáng)大,可能夠處理內(nèi)容管理系統(tǒng)(CMS)所要求的大多數(shù)常見任務(wù)。

安裝
要安裝和使用Yaapi,你需要一個(gè)支持PHP的Web服務(wù)器,例如Apache,當(dāng)然還有PHP,以及MySQL數(shù)據(jù)庫服務(wù)器。你可以下載一份Yaapi,將它解壓到服務(wù)器根目錄下的某個(gè)位置里。

你還需要?jiǎng)?chuàng)建一個(gè)MySQL數(shù)據(jù)庫,以容納Yaapi的數(shù)據(jù)結(jié)構(gòu)。使用源檔案里的yaapi.sql文件創(chuàng)建這個(gè)數(shù)據(jù)庫,然后打開類構(gòu)造函數(shù)(article.class.php文件)里的Yaapi配置,使用用于該數(shù)據(jù)庫的名字和訪問參數(shù)更新它。

添加內(nèi)容
要向數(shù)據(jù)庫里添加內(nèi)容,你就必須使用http://your-server/yaapi-root/admin/上的Yaapi管理模塊(用安裝有Yaapi的服務(wù)器的名稱來替換“your-server”,并用Yaapi解壓后的目錄來替換“yaapi-root”)。你要使用這個(gè)管理模塊來創(chuàng)建(和刪除)內(nèi)容類別,然后把文章放到這些類別里。下面就是你會(huì)在這一過程中碰到的字段的簡表:

類別(Category):文章的類別
章節(jié)ID(Section ID):如果你的文章有兩個(gè)層次,就要使用這個(gè)參數(shù)來定義第二個(gè)層次。
標(biāo)題(Title):文章的標(biāo)題
作者(Author):文章的作者
電子郵件(E-mail):文章作者的電子郵件地址
許可(Approved):用來表示文章是否已經(jīng)“得到許可”可以進(jìn)行顯示的標(biāo)志
圖像(Image):與文章相關(guān)的可選圖像URL
內(nèi)容(Content):文章的內(nèi)容
關(guān)于上面最后一個(gè)項(xiàng)目的一點(diǎn)小小注釋:通過在文章文本里插入分隔符,Yaapi能夠把你的大段文章分在若干個(gè)小的頁面里進(jìn)行顯示。見下面的例子:

Introduction of article here

#intro#
Page 1 content here
#page#
Page 2 content here
#page#
Page 3 content here
#page#
and so on...

別忘了在輸入文章之后確認(rèn)一下,因?yàn)橹挥薪?jīng)過確認(rèn)的文章才能夠用API檢索得到。
檢索類別和列表


既然你已經(jīng)把內(nèi)容放到了數(shù)據(jù)庫里,那么現(xiàn)在就到了用API檢索它并填充一個(gè)標(biāo)準(zhǔn)的HTML模板(可以對(duì)這個(gè)模板進(jìn)行修改,以符合你網(wǎng)站的設(shè)計(jì))的時(shí)候了。列表A里是該模板的基本代碼。

一開始你可以使用Yaapi來檢索某個(gè)特定類別里所有文章的列表,并在中間顯示它們的標(biāo)題、作者和簡介。列表B里是PHP代碼和實(shí)現(xiàn)這一代碼的Yaapi API調(diào)用。這段代碼需要稍稍解釋一下。

在使用Yaapi的時(shí)候,所要做的第一步是對(duì)類的對(duì)象進(jìn)行實(shí)例化;這個(gè)對(duì)象然后就會(huì)公開API方法和屬性,用以訪問數(shù)據(jù)庫里的內(nèi)容。為了獲取標(biāo)題的列表,你可以使用類別ID。后者可以通過URL傳遞或者是一個(gè)缺省的值。Get_titles()方法用這個(gè)類別ID來返回一個(gè)相關(guān)聯(lián)的數(shù)組,其中包含該類別里的文章ID和(經(jīng)過確認(rèn)的)文章標(biāo)題。

然后,get_article()方法會(huì)更加深入一步,在上一步里返回的文章ID列表里迭代,并返回代表每篇文章的對(duì)象。(文章)標(biāo)題、作者細(xì)節(jié)和介紹都被作為對(duì)象的屬性公開,并能夠用標(biāo)準(zhǔn)的對(duì)象屬性概念被檢索。要注意的是,文章標(biāo)題被更進(jìn)一步通過文章ID對(duì)象鏈接到一個(gè)單獨(dú)PHP腳本——article.php上。關(guān)于這一內(nèi)容不久會(huì)有更多的介紹。


--------------------------------------------------------------------------------

提示
你可以向get_article()方法傳遞可選的第二個(gè)參數(shù),即頁面標(biāo)號(hào),用來返回文章的一個(gè)專門頁面。


--------------------------------------------------------------------------------

要完成這個(gè)頁面上的工作,剩下要做的所有事情就是取得和打印可用類別的列表(要記住,你左邊的菜單需要這個(gè)列表)。你可以使用get_categories()方法來完成這一工作,這個(gè)方法會(huì)返回一個(gè)相關(guān)的數(shù)組,里面包含類別的名稱以及它們各自的ID。列表C包含從列表B到這個(gè)腳本所需要的更新。

在圖A里,你可以看到最終的結(jié)果:


檢索文章的內(nèi)容
完整文章的顯示由article.php腳本來處理,這個(gè)腳本要用文章ID來調(diào)用。列表D包括這個(gè)腳本的代碼,其中包括對(duì)頁面分隔符的支持,這是通過允許你利用頁面底部的頁碼跳到文章任何頁面來實(shí)現(xiàn)的。

每個(gè)頁面的內(nèi)容通過前面討論的get_article()方法來檢索。唯一的不同之處是,所返回對(duì)象的“內(nèi)容”屬性現(xiàn)在將會(huì)保存文章的一個(gè)特定頁面,而不是簡介。

Num_pages()這個(gè)屬性被用來獲取文章的頁面總數(shù)。這可以同一個(gè)簡單的for()循環(huán)結(jié)合在一起生成一個(gè)頁碼導(dǎo)航條和超鏈接,每一個(gè)都可以回到相同的腳本,它們都具有相同的文章ID,但是不同的頁面ID。

圖B顯示了輸出結(jié)果是什么樣的: