国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > CMS > PhpCMS > 正文

phpcms2008 內(nèi)容模型說明

2024-09-10 07:16:06
字體:
供稿:網(wǎng)友

cms 通過內(nèi)容模型功能實現(xiàn)了在后臺即可管理文章數(shù)據(jù)表的功能,內(nèi)容模型是一個 cms 最基本的功能.

每個內(nèi)容模型對應(yīng)一張數(shù)據(jù)表,添加一個內(nèi)容模型就會添加一張數(shù)據(jù)表,刪除一個內(nèi)容模型就會刪除一張數(shù)據(jù)表.

模型與數(shù)據(jù)表的對應(yīng)規(guī)則是:數(shù)據(jù)表名=表前序 + c_ + 模型定義的表名.

對應(yīng)的數(shù)據(jù)表就是 phpcms2008_c_jieju

在后臺可以管理模型數(shù)據(jù):

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

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

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

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

通過執(zhí)行 /include/admin/model.sql 中的 SQL 語句建立模型對應(yīng)的數(shù)據(jù)表。

新建立的模型對應(yīng)的數(shù)據(jù)表只有 contentid,content,template 三個字段,除 contentid 外,并沒有如 catid,title 這類模型[系統(tǒng)字段].

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

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

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

這種結(jié)構(gòu)有以下幾個特點:

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

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

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

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

如 content 字段:

雖是在新建模型時建立的字段,但并非系統(tǒng)字段,對應(yīng)的是擴展表中的 content 字段。

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

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

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

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

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

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

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

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

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

在定義好模型及模型字段后,就可以使用模型錄入數(shù)據(jù)了。cms 采用的是欄目關(guān)聯(lián)模型,要使用模型需要先建立與此模型關(guān)聯(lián)的欄目:

建好欄目后,就可以在[內(nèi)容管理]菜單中打開對應(yīng)的欄目,點擊[發(fā)布],便可見到文章錄入表單:

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

生成錄入表單調(diào)用的是 /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 

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

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

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

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

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

這樣,便能為模型錄入數(shù)據(jù)了.

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

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

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 秭归县| 南城县| 许昌市| 汪清县| 玉屏| 大埔县| 德格县| 碌曲县| 胶南市| 舟曲县| 金堂县| 边坝县| 五峰| 东至县| 拜泉县| 浮梁县| 板桥市| 福贡县| 深州市| 普安县| 新沂市| 简阳市| 江源县| 汉寿县| 象州县| 留坝县| 屏边| 航空| 张掖市| 彰化市| 江口县| 临桂县| 涟源市| 尼木县| 嵊泗县| 盐亭县| 九龙坡区| 十堰市| 灌南县| 东兴市| 五寨县|