麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > CMS > PhpCMS > 正文

phpcms2008 內容模型說明

2024-09-10 07:16:06
字體:
來源:轉載
供稿:網友

cms 通過內容模型功能實現了在后臺即可管理文章數據表的功能,內容模型是一個 cms 最基本的功能.

每個內容模型對應一張數據表,添加一個內容模型就會添加一張數據表,刪除一個內容模型就會刪除一張數據表.

模型與數據表的對應規則是:數據表名=表前序 + c_ + 模型定義的表名.

對應的數據表就是 phpcms2008_c_jieju

在后臺可以管理模型數據:

模型信息保存在 model 表中(eg.phpcms2008_model)

每個模型都有一組相同的字段,稱為[系統字段]:

在添加模型時會自動加入系統字段,系統字段不能刪除,只能禁用.

添加模型的操作通過 /admin/model.inc.php 中的 add 部份實現,真正處理的代碼是 /include/admin/model.class.php 的 add() 方法.

通過執行 /include/admin/model.sql 中的 SQL 語句建立模型對應的數據表。

新建立的模型對應的數據表只有 contentid,content,template 三個字段,除 contentid 外,并沒有如 catid,title 這類模型[系統字段].

這些系統字段放在 content 表中(eg.phpcms2008_content),這個表有 contentid,catid,title,url,thumb 等這些基本的文章字段.

所有模型中的文章的 url, title, thumb 等數據都是保存在 content 表中的,除這些字段外的字段值才保存在對應的模型數據表中,比如 content 字段就保存在模型數據表。

在添加一篇文章時,先把由 content 表保存的數據插入 content 表,取回插入的 contentid,就是數據庫的 insert_id,再把其它字段值插入模型數據表中,content 表稱為主表,模型數據表稱為擴展表,主表與擴展表通過 contentid 關聯.

這種結構有以下幾個特點:

1. 所有模型中的文章都可以使用一個連續的 contentid ,因此主表的一個作用就是產生一個自動編號的 contentid 。

2. 通過一個主表就可以查詢到所有的文章數據,實現前臺不同欄目不同模型的數據整合顯示。

3. 從數據庫優化的角度,一個數據表若要查詢速度快,盡量使用定長的字段類型(eg. char),避免使用變長的字段類型(eg. varchar, text),因此把所有變長的字段(eg. content)都放在擴展表中,令主表所有字段都是定長字段類型,加快查詢速度。

一個模型的字段信息保存在 model_field 表中(eg. phpcms2008_model_field),系統字段每一個對應主表中的一個字段,所以才會不能刪除,其它字段每一個對應擴展表中的一個字段。

如 content 字段:

雖是在新建模型時建立的字段,但并非系統字段,對應的是擴展表中的 content 字段。

在給一個模型添加字段時,所添加的都是擴展表的字段。添加字段的操作由 /admin/model_field.inc.php 中的 add 部份執行。在使用 /include/admin/model_field.class.php 的 add() 方法把字段數據保存到 model_field 表后,會調用對應字段類型的 field_add.inc.php 文件為擴展表增加實際的數據表字段。

字段類型是對數據表字段的一種包裝,cms 的所有字段類型存放于 /include/fields/ 目錄下,每個字段類型一個文件夾,文件夾名就是字段類型名。

每個字段類型的中文含意保存在 /include/fields/fields.inc.php 文件中。

在后臺添加模型字段時,會調用對應字段類型的 field_add.inc.php 文件,此文件的作用就是為擴展表添加字段。

以 editor 字段類型為例, editor 字段類型的中文含意是[編輯器],可以在 /include/fields/fields.inc.php 中查到,字段類型目錄是 /include/fields/editor/.

字段類型可以有自己的設置參數,使用 field_add_form.inc.php 文件,editor 字段類型的設置參數表單文件就是 /include/fields/editor/field_add_form.inc.php:

另一個相似的文件是 field_edit_form.inc.php ,在修改字段時使用。

editor 字段類型實際使用 MySQL 的 MEDIUMTEXT 字段類型保存。在添加模型字段時,會調用字段類型的 field_add.inc.php 文件,其作用就是為擴展表添加實際的表字段,editor 字段類型的 /include/fields/editor/field_add.inc.php 文件就是給擴展表加上一個 MEDIUMTEXT 字段。

與 field_add.inc.php 功能相似的是 field_edit.inc.php 文件,在修改模型字段時調用,用于修改擴展表的字段。

在定義好模型及模型字段后,就可以使用模型錄入數據了。cms 采用的是欄目關聯模型,要使用模型需要先建立與此模型關聯的欄目:

建好欄目后,就可以在[內容管理]菜單中打開對應的欄目,點擊[發布],便可見到文章錄入表單:

錄入表單由對應的字段類型自己負責生成,比如 editor 字段類型的表單是一個 HTML 編輯器,由 editor 自己負責生成:

生成錄入表單調用的是 /include/content_form.class.php 文件,里面是所有字段類型生成其表單的方法,比如 editor() 方法就是生成 editor 字段類型的錄入表單。

錄入文章的后臺控制器是 /admin/content.inc.php 文件 add 部份。生成各字段的錄入表單是這三句 PHP 代碼:

  1. require PHPCMS_ROOT .'include/content_form.class.php'
  2. $content_form = new content_form($modelid); 
  3. $forminfos = $content_form->get($data); 
  4. //開源軟件:Vevb.com 

修改文章時也是用同樣的邏輯生成數據編輯表單.

表單提交數據后,會使用 /include/admin/content.class.php 的 add() 方法把數據保存到數據表中,在寫入數據表之前,會先調用 /include/content_input.class.php 的 get() 方法對表單提交的數據進行處理,并按主表及擴展表的字段分成兩個數據,之后先插入主表,再插入擴展表。

在插入完數據后再調用 /include/content_update.class.php 的 update() 方法。進行插入數據后的后續操作。

content_input.class.php 主要讓字段類型對輸入的數據進行格式化操作,比如 int 類的表字段在 php 中使用 intval 格式化一下,不允許 html 的文本框使用 html 過濾函數過濾一下,文件上傳形的字段類型處理上傳的文件等。

content_update.class.php 主要用于執行需要得到 contentid 后才能進行的操作。

這樣,便能為模型錄入數據了.

至于前臺查詢(主要是首頁,列表頁這種頁面),主要是從主表中查詢,需要用到擴展表字段時則使用 join 連表查詢,采用直接寫 sql 語句的形式.

前臺查詢最常見的就是顯示某一欄目的文章,所以主表會根據前臺主要的查詢建立索引。比如給 catid 加索引,在 where 時走索引,給 listorder, updatetime 這些加索引,在 order by 時走索引。

在前臺顯示一篇文章時,使調用 /include/content_output.class.php 對字段值進行輸出前的加工處理。字段類型需要輸出前的格式化都可以在這里完成。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲人成网在线观看 | 国产一区二区成人在线 | 午夜生活理论片 | 青青草国产在线视频 | 日韩视频在线视频 | 久久国产中文 | 中国videos露脸hd | 依依成人精品视频 | 亚洲成人福利在线 | 草莓福利视频在线观看 | 91丨九色丨国产在线观看 | 27xxoo无遮挡动态视频 | 久久国产精品久久精品国产演员表 | sesee99| av一道本 | 国产午夜精品久久久久久久蜜臀 | 欧美成人精品一区二区男人小说 | 福利免费在线观看 | 欧洲成人综合网 | 久草在线手机视频 | 欧美交在线 | 中文字幕伦乱 | 999久久久国产999久久久 | 在线免费观看毛片视频 | 国产无限资源在线观看 | 毛片网站网址 | 全免费午夜一级毛片真人 | 国产精品成人免费一区久久羞羞 | 成人一级片毛片 | 国产成人精品区一区二区不卡 | 久久久久久麻豆 | 欧美国产综合视频 | 黄色午夜剧场 | 国产精品剧情一区二区在线观看 | 中文字幕在线看第二 | 亚洲一区二区成人 | 天天躁狠狠躁夜躁2020挡不住 | 男女隐私免费视频 | 91精品国产九九九久久久亚洲 | 免费看污视频在线观看 | 亚洲一区在线国产 |