小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

新浪的內容管理系統(tǒng)CMS模型

 昵稱18263306 2014-06-28

在代碼層次上看,SinaCMS是使用C++編碼的,模板取數據的時候則使用了perl腳本。SinaCMS里面頻道、項目和模板是結合在一起的,他們三者的關系是:

  1. 一個頻道就是一個項目,在數據庫里面體現就是一個數據庫,比如說新聞中心,對應一個名為news的數據庫;
  2. 一個頻道會有若干個模板,例如首頁,新聞頁,這些在數據庫中體現為相關的表;
  3. 模板需要定義模板域,模板域有表單類型模板域(Form)和應用類型模板域(Application)兩種類型,前者面向編輯的提供數據界面接口功 能,后者面向技術支持人員提供高級的二次開發(fā)功能。模板域在數據庫中就是模板表中相對應的數據擴展字段,例如Form::TextField對應的就是 text字段,數據由編輯錄入,Application::SQLResult,也是text字段,存儲的則是執(zhí)行Perl腳本執(zhí)行后的結果。模板的內容存儲在另外的字段中。

不難看出,SinaCMS具有極其強大的靈活性。因為它的數據庫結構是項目建立以后構建模板的時候才確定的。各個頻道,例如資訊頻道、財經頻道和汽車頻道,可以擁有完全不同的數據庫結構,不同頻道的特殊需求也可以完全定制。另外可以看出SinaCMS里面的模板是最主要的模型,承擔 了確定數據表結構、文章發(fā)布和管理以及配置頻道參數等等功能。

我們來看CMS系統(tǒng)中常見的新聞頁,頻道首頁和列表頁在SinaCMS中是怎么實現的。

編輯上文章時,先找到該頻道的新聞頁,然后在下面錄入文章,錄入完畢后點擊發(fā)布,系統(tǒng)會根據模板的內容去獲取相關的字段內容,根據模板的屬性最后發(fā) 布成相應的靜態(tài)文件,其間如果和其他模板有相關關系(在新聞頁模板域中定義Application::PostInPage),則會去觸發(fā)相應的模板(例 如首頁和列表頁)更新。

在首頁模板的區(qū)塊中,可以分為動態(tài)和靜態(tài)兩種。對于需要經常更新的靜態(tài)區(qū)塊,可以獨立出來做成一個模板,靜態(tài)區(qū)塊就相當于該模板下的一篇(有且僅有 一篇)文章,當然也可以在首頁中新建一個Form::TextField的模板域。動態(tài)區(qū)塊例如動態(tài)新聞列表,則可以在首頁中新建一個 Application::SQLResult的模板域,通過執(zhí)行perl腳本獲取內容填充,然后在首頁模板內容引用該模板域,當然同樣也可以新建一個只 包含一個Application::SQLResult域的模板。

對于列表頁,首先列表頁的分頁值可以存儲在列表頁的模板域中,也可以保存在某個模板中。分頁在處理時,會通過perl腳本來執(zhí)行分頁算法。最終所有列表頁都是列表頁模板下的一個文檔集。

在一個項目中,為了提高發(fā)布效率,還會存在若干的臨時存儲表和歸檔表(其實就是一些模板啦)。例如在首頁的動態(tài)新聞列表,就有可能建一個臨時存儲數 據的模板,這時如果頻繁更新首頁或者含有動態(tài)新聞列表的模板時,無疑將減輕數據庫的壓力。新聞單頁的模板在處理時可以就保存最近一個月內的文章,尤其在文 章數據增長較快的頻道,這時就很有必要。那么以前的文章就需要轉儲到一個歸檔表中,作為查詢和偶爾更新某篇文章使用。

SinaCMS中的頻道路徑path(例如資訊>大陸>正文)是通過模板處理的,在模板的模板域中會用perl來處理相關的邏輯。子頻道和專題也是通過模板來實現的,它會通過新增一個模板來建立子頻道和專題之間的關系。

至此,我們可以了解到SinaCMS中使用了非常多的冗余字段來存儲本來需要多表聯合查詢的數據,這無疑提高了文章的發(fā)布效率。

在其他的CMS中,模板只是獨立概念中的一個,而在SinaCMS中,萬事萬物皆模板。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多