用Yaapi與PHP構建一個容易的內容管理系統
發表時間:2023-08-21 來源:明輝站整理相關軟件相關文章人氣:
[摘要]如果你是一個正在構建具有豐富內容的Web網站的開發人員,你就可能需要考慮下面這些解決方案,其中包括(a)用于內容的數據庫,(b)將GUI與內容分離的模板系統,(c)用來維護數據庫里數據的用戶友好界面...
如果你是一個正在構建具有豐富內容的Web網站的開發人員,你就可能需要考慮下面這些解決方案,其中包括(a)用于內容的數據庫,(b)將GUI與內容分離的模板系統,(c)用來維護數據庫里數據的用戶友好界面,以及(d)對所生成頁面的最終外觀的控制。
能夠提供上述所有內容的一個非常有趣的解決方案就是Yaapi,它是“你的文章應用程序編程接口(Your Article Application Programming Interface)”的開頭字母縮寫。它是一個PHP類,提供了內置的方法來訪問保存在數據庫里的內容。管理模塊裝備有協助管理數據的類,而這個API本身都足夠強大,可能夠處理內容管理系統(CMS)所要求的大多數常見任務。
安裝
要安裝和使用Yaapi,你需要一個支持PHP的Web服務器,例如Apache,當然還有PHP,以及MySQL數據庫服務器。你可以下載一份Yaapi,將它解壓到服務器根目錄下的某個位置里。
你還需要創建一個MySQL數據庫,以容納Yaapi的數據結構。使用源檔案里的yaapi.sql文件創建這個數據庫,然后打開類構造函數(article.class.php文件)里的Yaapi配置,使用用于該數據庫的名字和訪問參數更新它。
添加內容
要向數據庫里添加內容,你就必須使用http://your-server/yaapi-root/admin/上的Yaapi管理模塊(用安裝有Yaapi的服務器的名稱來替換“your-server”,并用Yaapi解壓后的目錄來替換“yaapi-root”)。你要使用這個管理模塊來創建(和刪除)內容類別,然后把文章放到這些類別里。下面就是你會在這一過程中碰到的字段的簡表:
類別(Category):文章的類別
章節ID(Section ID):如果你的文章有兩個層次,就要使用這個參數來定義第二個層次。
標題(Title):文章的標題
作者(Author):文章的作者
電子郵件(E-mail):文章作者的電子郵件地址
許可(Approved):用來表示文章是否已經“得到許可”可以進行顯示的標志
圖像(Image):與文章相關的可選圖像URL
內容(Content):文章的內容
關于上面最后一個項目的一點小小注釋:通過在文章文本里插入分隔符,Yaapi能夠把你的大段文章分在若干個小的頁面里進行顯示。見下面的例子:
Introduction of article here
#intro#
Page 1 content here
#page#
Page 2 content here
#page#
Page 3 content here
#page#
and so on...
別忘了在輸入文章之后確認一下,因為只有經過確認的文章才能夠用API檢索得到。
檢索類別和列表
既然你已經把內容放到了數據庫里,那么現在就到了用API檢索它并填充一個標準的HTML模板(可以對這個模板進行修改,以符合你網站的設計)的時候了。列表A里是該模板的基本代碼。
一開始你可以使用Yaapi來檢索某個特定類別里所有文章的列表,并在中間顯示它們的標題、作者和簡介。列表B里是PHP代碼和實現這一代碼的Yaapi API調用。這段代碼需要稍稍解釋一下。
在使用Yaapi的時候,所要做的第一步是對類的對象進行實例化;這個對象然后就會公開API方法和屬性,用以訪問數據庫里的內容。為了獲取標題的列表,你可以使用類別ID。后者可以通過URL傳遞或者是一個缺省的值。Get_titles()方法用這個類別ID來返回一個相關聯的數組,其中包含該類別里的文章ID和(經過確認的)文章標題。
然后,get_article()方法會更加深入一步,在上一步里返回的文章ID列表里迭代,并返回代表每篇文章的對象。(文章)標題、作者細節和介紹都被作為對象的屬性公開,并能夠用標準的對象屬性概念被檢索。要注意的是,文章標題被更進一步通過文章ID對象鏈接到一個單獨PHP腳本——article.php上。關于這一內容不久會有更多的介紹。
--------------------------------------------------------------------------------
提示
你可以向get_article()方法傳遞可選的第二個參數,即頁面標號,用來返回文章的一個專門頁面。
--------------------------------------------------------------------------------
要完成這個頁面上的工作,剩下要做的所有事情就是取得和打印可用類別的列表(要記住,你左邊的菜單需要這個列表)。你可以使用get_categories()方法來完成這一工作,這個方法會返回一個相關的數組,里面包含類別的名稱以及它們各自的ID。列表C包含從列表B到這個腳本所需要的更新。
在圖A里,你可以看到最終的結果:
檢索文章的內容
完整文章的顯示由article.php腳本來處理,這個腳本要用文章ID來調用。列表D包括這個腳本的代碼,其中包括對頁面分隔符的支持,這是通過允許你利用頁面底部的頁碼跳到文章任何頁面來實現的。
每個頁面的內容通過前面討論的get_article()方法來檢索。唯一的不同之處是,所返回對象的“內容”屬性現在將會保存文章的一個特定頁面,而不是簡介。
Num_pages()這個屬性被用來獲取文章的頁面總數。這可以同一個簡單的for()循環結合在一起生成一個頁碼導航條和超鏈接,每一個都可以回到相同的腳本,它們都具有相同的文章ID,但是不同的頁面ID。
圖B顯示了輸出結果是什么樣的: