帝国CMS 将TAGS放到的方法

帝国cms在 新增/编辑
信息时,信息的TAGS属性隐藏于选项卡中,如果将TAGS放到选项卡中,则可以省时省力又方便管理。如图:

cms 通过内容模型功能实现了在后台即可管理文章数据表的功能。内容模型是一个
cms 最基本的功能。

实现此功能分两步修改:

每个内容模型对应一张数据表,添加一个内容模型就会添加一张数据表,删除一个内容模型就会删除一张数据表。

1、修改 e/admin/AddNews.php 文件

模型与数据表的对应规则是:数据表名=表前序 + c_ + 模型定义的表名。
澳门新葡亰手机版 1

在此文件中查找 td height=25 bgcolor=#FFFFFFTAGS
,在此处上下行代码找到如下代码并删除:

对应的数据表就是 phpcms2008_c_jieju

 ?php if(strstr($public_r[usetags],,.$modid.,)) { $infotag_readonly=;$infotag_copykeyboard=input type=button name=Submit3 value=复制关键字 onclick=document.add.infotags.value=document.add.keyboard.value;; if(strstr($public_r[chtags],,.$modid.,)){$infotag_readonly= readonly;$infotag_copykeyboard=;} ? tr td height=25 bgcolor=#FFFFFFTAGS: input name=infotags type=text id=infotags value=?=$r[infotags]? size=32?=$infotag_readonly? input type=button name=Submit value=选择 onclick=window.open(tags/ChangeTags.php?form=addfield=infotags?=$ecms_hashur[ehref]?,,width=700,height=550,scrollbars=yes); ?=$infotag_copykeyboard? input name=oldinfotags type=hidden id=oldinfotags value=?=$r[infotags]? font color=#333333(多个用,逗号格开)/font/td /tr ?php } ?

澳门新葡亰手机版,在后台可以管理模型数据:
澳门新葡亰手机版 2
模型信息保存在 model 表中(eg. phpcms2008_model)

2、修改各数据表的 special.field 字段

每个模型都有一组相同的字段,称为[系统字段]:
澳门新葡亰手机版 3
在添加模型时会自动加入系统字段,系统字段不能删除,只能禁用。

special.field 是系统默认字段,在字段的“输入表单替换html代码”中末尾,找到
/table ,在其上插入第一步中删除的代码即可。

添加模型的操作通过 /admin/model.inc.php 中的 add
部份实现,真正处理的代码是 /include/admin/model.class.php 的 add()
方法。
通过执行 /include/admin/model.sql 中的 SQL 语句建立模型对应的数据表。

注意:所有需使用tag功能的数据表都需要做第二步的修改。

新建立的模型对应的数据表只有 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 字段:

澳门新葡亰手机版 4

虽是在新建模型时建立的字段,但并非系统字段,对应的是扩展表中的 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
文件,此文件的作用就是为扩展表添加字段。