DedeCMS二次开发程序篇

4.1、自定义模型使用教程
在织梦系统中有内容模型这个概念,不同内容模型可以用来构建不同内容形式的站点,在系统中自带了以下几种模型:普通文章、图集、软件、商品、分类信息、专题。通过系统自带的模型,我们可以用来构建不同类型的站点,例如:使用图集可以做一个图片站,用软件模型构建一个软件下载站点。
当然以上随系统附带的模型被称为系统模型,用户可以自己定义一些模型,比如图书、音乐专辑等,自定义了这些模型才可以构建更多内容形式的站点,本篇将讲述如何使用系统的自定义模型管理功能来实现内容模型的构建。
我们首先登录系统后台,点击[核心]-[内容模型管理],进入内容模型管理界面,如下图所示:

这里我们介绍几个相关参数的概念:
•ID号 用于区分模型的唯一ID,一般常规模型的ID都是大于0的,比如普通文章、软件等,如果使用了单表模型,ID一般需要小于-1,例如这里的分类信息模型;
•频道名称 用于识别频道类型的标识;
•识别id 系统用于识别的id,这个关系到模板方面;
•附加表 系统内容附加表项;
•模型类型 分为系统类型和自动类型,系统类型为固化在系统中的内容模型,自动类型为用户可创建的内容模型类型;
接下来我们开始介绍如何使用自定义模型管理来创建一个自己的模型,并且用于建设不同内容类型的网站中去。
这里我们介绍一些周边的内容,几个要用到的概念:
•字段 在数据库中,表的列称为字段,织梦系统也是如此,但更恰当的说法,存储某个内容信息单元,称为字段,例如标题、来源、作者等都是一个字段;
•内容系统主表 程序将一些公用字段存储在系统主表dede_archives,例如:标题、关键词、缩略图等,主表具体字段可以查询织梦帮助中心(http://help.dedecms.com)的有关二次开发手册数据表部分的内容;
•附加表 不同内容模型对应不同的附加表,通常以dede_addon[识别ID]命名,附加表中存放的都是详细内容的相关字段(非公用),例如:文章内容(dede_addonarticle)、软件类型(dede_addonsoft)、图片集合(dede_addonimage)等;
•单表独立模型 存储时候不用到“主表+附加表”的结构形式,直接使用单个数据表进行存储内容数据,这样脱离主从表,减少主表数据服在开销,可以从很大程度上解决数据负载问题;
明白了以上几个概念我们可以来学习如何来自己创建一个内容模型了。
一个完整的内容模型包含模型数据表、数据字段、模型模板、模型参数4个部分,制作一个内容模型大致有以下几个步骤:1.模型规划;2.模型制作;3.模板制作;4.栏目设置,下面我们从上面4个步骤来讲解内容模型的制作。这里我们以一个图书模型(book)为例子,这个模型主要功能就是介绍书籍。
模型规划
模型规划分为几个部分一个是模型应用方面的规划,其次就是字段信息方面的规划,以图书(book)模型为例子,我们现规划一个频道使用这个模型,这个频道作用就是让大家分享一些好的学习资料,这里主要是编程方面的书籍,所以栏目划分大致如下:

[网络编程书籍]
|____[ASP相关]
|____[PHP相关]
|____[JSP相关]
|____[.NET相关]

这几个栏目是支持会员投稿的,因为这个推荐的书籍不是很多,所以直接采用主从表的形式,不使用独立单表模型,因为涉及到会员分享,所以这里需要会员投稿,我们给投稿会员级别设置为中级会员才有权限,并且需要摘要和说略图,投稿之后需要经过管理员审核,这样基本的使用规划完成,下面就是字段方面的规划了。
因为介绍一本书,我们规划了以下内容:

出 版 社     publish     单行文本(varchar)
出版时间     pubtime     时间类型
字  数     cnum     整数类型
版  次     pubnum     整数类型
页  数     pagenum     整数类型
印刷时间     pritime     时间类型
开  本     kbook     单行文本(varchar)
印  次     prinum     整数类型
纸  张     pages     单行文本(varchar)
I S B N     isbn     单行文本(varchar)
包  装     packs     单行文本(varchar)
内容简介     body     HTML文本
作者简介     wrbody     HTML文本
目录     bindex     HTML文本

这样,我们完成了第一步模型的规划。
模型制作
规划完成了,接下来我们开始将这些规划的内容创建为一个内容模型。首先以超级管理员身份登录到系统后台。点击[核心]-[模型管理],点击“增加新模型”按钮来创建模型。
按照系统提示配置模型的基本信息,这里因为选择的是自动模型,所以档案发布的相管程序页面只需要保留默认即可。因为我们发布的是图书,所以这里“投稿标题使用名称”设置为:图书名称。

因为这里我们使用的是自动模型,没有自己制作相应的发布管理程序,所以下面的相关模型发布程序保持默认即可,当然如果你有一定的编程能力,可以自己制作一个内容发布程序,然后在这里指定即可。

基本信息设置完毕,直接单击确定即可,进入到字段管理的页面,点击字段管理中的“添加新字段”按钮,进入字段添加页面,我们根据相关的字段信息进行字段添加。
下面是一些字段类型我们对部分字段进行一些说明:

单行文本(varchar):常用字段,如文章标题、作者等都属于直接输入少量内容的文本,设置这个文本之后需要指定文本长度,默认为250,如果大于255则为text类型
多行文本:也是较为常用的字段类型,如个人简介、产品描述都可以使用多行文本进行存储
HTML文本:用织梦编辑器编辑产生的html内容,用于比较复杂的内容形式
附件类型:可以后台上传附件让用户下载,附件类型可以在后台进行设置
option下拉框:下拉选择,一般用于如软件类型、语言类型等字段
联动类型:一种数组形式的数据类型,可以在系统后台联动类型管理中进行设置
了解了这些字段类型我们就可以添加我们的字段信息了。

添加完成点击确定即可,这样我们就完成了这个模型的制作。模型添加完毕之后我们发现在内容发布的地方多出来一个发布图书的选项,这个说明我们的模型就已经成功添加了。

模板制作
我们通过织梦帮助中心的《主要模板文件与功能说明》了解到每个模型还需要制作对应的模型模板文件,我们可以通过后台模型管理中的模板文件说明查看模板文件。

模板制作主要有2个地方需要讲解下。
1.      列表页模板list_[识别ID].htm中显示在列表中需要调用添加扩展的字段需要在添加字段页面勾选“使字段可以在列表的底层模板中获得(自定义字段默认仅能在文档模板显示,启用此选项将使列表查询变慢,如无必要请不要选择)”,这样在{dede:list/}标签中就可以使用[field:fieldname/]来进行调用。
2.      内容页的标签可以使用{dede:field.fieldname /} 进行调用,具体可以参考帮助中心模板相关的帮助文档。
栏目设置
接下来我们就可以来添加一个栏目,在栏目设置中将栏目的内容模型设置为图书

然后我们就可以在这个栏目下添加文档,会发现我们现在可以发布图书内容了

添加完成之后,我们可以浏览我们的网站页面,预览我们的模型效果。

至此我们完成了整个模型的制作,整个过程还是非常简单的。这里只介绍了自动模型的制作,当然有一定PHP基础的用户可以自己开发系统模型,这样就会拥有更为强大的织梦系统,使得网站内容更加丰富。

4.2、联动类别使用说明教程
织梦在新版本V5.3中加入了一个联动类别的功能,不少人不理解这个联动类别的使用方法,本教程天涯就来介绍如何使用这个功能。
联动类别使用的地方还是比较多的,首先我们可以通过后台的[核心]-[频道模型]-[联动类别管理]查看,联动类别其定义如下:系统一种特殊的枚举数据类别,可以有系统内置或由用户管理。系统内置的枚举用户是不可以删除的,但可以对这些数据进行添加子分类及修改。到这里可能一些用户还是不了解什么是联动类型,下面我们举几个简单的例子。
一个最简单的联动类型是只有一级选择的类型,比如说系统内置的星座、教育程度、血型,这种类型你可以点击进去查看,其结构很简单,例如星座(star):

在这个联动类别中级数为“一级选择”,就是在这个星座类别下面只有一列品级数据进行选择,我们点击进去可以查看到以下内容:

这个让我们很容易联想到许多网站中设置用户资料的时候,需要用户选择星座,我们就可以通过一个下拉框进行选择:

当然,上面说到的是最简单的联动类别,只有一级联动,这种一级联动就可以好比是一个下拉框,用户在选择具体数据的时候只要通过下拉框这种形式就可以对数据进行选择。但是我们在很多联动数据中遇到不少需要二级联动的类型,例如我们在资料设置中选择“所在城市”这个类别,如下图所示

这种数据类型就属于需要选择2次分类,首先选择上海市,然后列出上海市拥有的地区,然后再进行第二次选择,这就是一个二级联动的类别,我们可以通过系统后台查看联动类别中的地区来看看系统的枚举类型。

通过以上2个例子我们不难理解联动类型的概念,其实说简单了就是一种特殊的枚举数据类型,这种特殊的枚举类型运用在创建内容模型、用户资料等数据录入的页面中,其中应用在创建模型及用户自定义表单是联动类别最常用的地方,下面我们来介绍如何使用这个联动模型。
我们以创建一个“图书(book)”内容模型为例,这个模型中我们需要网站管理员(用户)提交一个图书特征的分类,我们知道以下图书特征的分类:
线装书,精装书,平装书,袋装书,电子书,有声读物,盲人书
下面我们就创建一个这个一级选择的枚举类型,这个类型叫图书特征(bookfeature),我们点击“新增类别组”来创建分类。

创建完成后我们将类别的内容全部添加到这个类别中去,在页面中提示我们如果一次性添加多个类别可以用“,”将不同类别隔开,然后一次性添加。

这样我们就创建完成了这个图书特征(bookfeature)的联动类型,接下来我们要应用这个联动类型,我们在新创建的模型中添加字段,在字段添加的页面中添加相应的字段名称,选择数据类型为联动类型,如下图所示:

在我们发布图书内容的时候,就会发现有一个选择是图书特征的内容类型选择,不过个人建议如果设计一级联动选择,最好还是使用“option下拉框”这个数据类型。
使用同样的字段设置方法也可以添加其他二级联动的字段,这个我们可以查看“分类信息”这个模型里面的联动类型数据。

当然我们在系统的自定义表单中也可以使用这个联动类型,使用的方法和模型管理里面添加字段是一样的,这里就不再重复了。当然,在二次开发中也会遇到在一些页面调用这些枚举的列表,可以查看/include/enums.func.php第61行GetEnumsForm这个函数,具体的使用可以参考下会员中心编辑用户信息这个页面文件的方法,具体文件为/member/templets/ edit_info_person.htm。
枚举类型在模型制作和系统开发中用到的地方还是比较多的,大家可以有空的时候进行一些研究,会发现更多关于联动类型的应用方法,不要忘记分享哦。

未经允许不得转载:Cooders'S Blog » DedeCMS二次开发程序篇