dedecms中的内容模型是指文章、软件、商品等类型的文章字段模板。在dedecms中,文章数据由文章主表和文章附加表构成,主表存放文章公共拥有的信息,比如标题,添加时间,点击量等,文章附加表存放文章的内容信息,比如普通文章,商品信息,软件信息等。
1.认识内容模型管理
在主菜单上点击“核心”选项卡,然后点击“频道模型”栏中的“内容模型管理”,即可进入内容模型管理界面(如图1所示)
图1-内容模型管理界面
内容模型的自定义程度越高,网站所实现的展示功能就越多,可以有效的降低研发成本。接下来介绍管理细节。
点击“增加新模型”按钮(图1右上角),此时进入了新建模型的表单。在此以创建一个视频模型为例进行解释。
频道ID:频道的数字ID,只能是数字,具有唯一性。
名字标识:此名称主要用于与模板的关联,推荐使用英文和数字,以便程序的跨平台使用
频道名称:频道名称将会在前台发布和后台管理等界面中出现
附加表:这就是上文提到的文章附加表,名称以系统表名前缀开始(默认dede_),以及频道的标示为名,这个表名是可以自由修改的。
模型性质:如果为系统模型将禁止删除,此选项不可更改,对于独立模型,系统强制创建字段aid,typeid,senddate,title, mid, channel,独立模型的文档内容必须点击栏目进入列表才能管理。此选项推荐选择自动模型。
是否支持会员投稿:选择“不支持”前台用户将无法投稿,选择“支持”则前台用户可以投稿。
会员许可投稿级别:选择投稿对应会员的级别
许可投稿会员组: 允许投稿的会员组
会员稿件默认状态:会员投稿的文章状态
投稿标题使用名称:在投稿时默认显示的内容
投稿是否使用摘要:是否对投稿文章使用摘要,独立模型如果需要摘要需要自行创建对应字段
投稿是否使用缩图:是否提取缩略图,独立模型如果需要摘要需要自行创建对应字段
默认栏目ID:投稿文章的默认栏目ID,栏目ID可以在栏目管理中看到
投稿具有唯一性:选择“是”后每个会员在对应的默认栏目中只能投稿一篇,其作用与自定义表单相同
档案发布程序:添加文章的程序
档案修改程序:修改文章的程序
档案管理程序:文章列表程序
前台会员发布程序:会员在前台投稿时使用的程序
前台会员修改程序:会员修改文章的程序
前台会员管理程序:前台文章列表程序
(注意:这6个程序都是php程序,而不是模板文件,如果没有写这几项对应的php程序,则不要修改,仅修改发布用的htm模板请到程序文件中查看使用的模板是哪些,比如content_list.php中对应的模板是 /dede/templets/content_list.htm)
如(图2)所示
图2-建立新内容模型
填写好后,点击“确定”按钮,提示成功后,自动跳转到了编辑页面。
3.模型更改
新建的模型更改时其它选项与创建相同,多了一项列表附加字段,这是用于前台模板上调用的,如果需要在对应的列表模板中调用该字段,则需要在此填写,比如稍后建立的视频时长字段“timelong”,填写之后就可以在前台模板的{dede:list}{/dede:list}标签之间用[field:timelong /] 来调用了。修改好之后点击“确定”按钮。
此时我们需要编辑字段了,在表单头部,点击“字段管理”选项卡。此时可以点击“添加新字段”按钮来添加字段了。
在添加字段的操作中有以下几项:
表单提示文字:发布内容时显示的提示文字
字段名称:只能用英文字母或数字,数据表的真实字段名,如果数据类型是联动类型,该项应该填写联动类型的组名称(参阅联动类型管理)。
字段类型:选择“系统自动生成表单字段”,系统将会自动生成表单项,比如单行文本类型会生成一个类似于<input type="text" name="timelong" />的表单项,如果选择“已经固化在发布表单中字段 ”则需要手动去更改添加用的表单。
前台参数:[复选]使字段可以在列表的底层模板中获得(自定义字段默认仅能在文档模板显示,启用此选项将使列表查询变慢,如无必要请不要选择),[复选]前台投稿及采集规则禁用本字段
内容是否需要分页符: 如果内容需要分页符,不论何种内容,都可以用#P#副标题#e#作为分页符号实现内容分页,但一个模型里仅允许一个这样的字段!大部分字段是不需要分页的
数据类型:此项主要是用于自动生成的表单,在这里我们对每种类型和对应的表单类型进行概要
单行文本(varchar):对应文本输入框
单行文本(char):对应文本输入框
多行文本:对应文本输入框
HTML文本:html编辑器
文本保存HTML数据:html编辑器
整数类型:对应文本框
小数类型:对应文本框
时间类型:对应带时间选择插件的文本框
图片:对应附件
图片(仅网址):对应文本框
多媒体文件:对应附件
附件类型:对应附件
使用option下拉框:对应select下拉菜单
使用radio选项卡:对应radio单选菜单
Checkbox多选框:对应checkbox多选菜单
联动类型:对应dede联动类型(请参阅联动类型相关文档)
默认值: 如果定义数据类型为select、radio、checkbox时,此处填写被选择的项目(用“,”分开,如“男,女”)。
最大长度:文本数据必须填写,大于255为text类型
自定义表单HTML:不填写则使用默认模型,如果有特殊需要,填写自定义表单HTML模板中用~name~表示提示文字,~form~表示表单元素。
如(图3)所示
图3-添加字段
填写好后点击“确定”按钮保存。
此后,如法炮制,我们再创建一个html字段来存放从优酷复制来的视频html代码。
添加完成后,回到字段管理页面,可以看到对应的信息,如(图4)所示
图4-字段管理
字段添加完成后,一个新模型就算创建完成了。
4.模板修改
如(图1)中,可以看到管理列中第二个图标是模板管理,点击按钮,列出了该模型的模板,这里建议使用IDE修改模板,而不是在网站后台。
5.模型导出
如(图1)中,点击管理列中的模型导出,将模型规则复制出来,可以在其它dedecms(最好是同版本)中导入了。
6.模型导入
如(图1)中,点击列表头部的模型导入,将其它程序中复制出来的模型规则粘贴在输入框中,然后点击“确定”按钮,即可导入一个模型。
7.模型复制
如(图1)中,点击管理列的“模型复制”按钮,可以将现有模型复制到新模型,只需要填写对应的ID,名称,标识和附加表即可完成。如(图5)所示
图5-模型复制
8.自定义搜索
频道模型的自定义搜索只针对本频道的内容搜索,如(图1)中,点击管理列“自定义搜索”按钮,进入生成自定义搜索的节目,首先需要选择“主表可供自定义搜索的字段”,
标题、关键字、摘要为默认选项,不用选择,除了这些之外,可以选择“是否推荐”,“栏目”,“作者”,“来源”,“发布时间”等项,当然还可以选择“附件表可供自定义搜索的字段”,这里会列出附加表可供搜索的字段,如果需要,可以自行选择勾选。
还可以自定义显示用的模板,模板的编写方法需要参考默认的advancedsearch.htm,配置好后点击“确定”按钮生成表单代码,然后将代码复制到需要使用高级搜索的列表模板等模板中即可。如(图6)所示
图6-自定义搜索
9.删除模型
如(图1)中,点击管理列中的“删除”按钮,即可删除频道模型。
10.模型使用
模型创建好后,在后台建立的栏目中就可以选择新建的模型了(参见栏目管理文档),如(图7)所示。
图7-添加视频栏目
栏目创建好后,在该栏目中添加文章,此时会发现出现了该模型的字段(如图8所示),填写对应信息,然后点击确定可以添加一篇文章
图8-添加文章
文章添加好之后就需要修改模板了。打开模板目录,首先需要修改列表页模板,在这里复制一个list_article.htm,修改为list_chv.htm作为例子。打开list_chv.htm,在{dede:list}{/dede:list}标签直接加上[field:timelong/],比如:
{dede:list pagesize='10'}
<li> [field:array runphp='yes']@me = (empty(@me['litpic']) ? "" : "<a href='{@me['arcurl']}' class='preview'><img src='{@me['litpic']}'/></a>"); [/field:array]
[<b>[field:typelink/]</b>] <a href="[field:arcurl/]" class="title">[field:title/]</a> <span class="info"> <small>日期:</small>[field:pubdate function="GetDateTimeMK(@me)"/] <small>点击:</small>[field:click/] <small>好评:</small>[field:scores/] <small> 时长:</small>[field:timelong/] </span>
<p class="intro"> [field:description/]... </p>
</li>
{/dede:list}
然后保存该模板,在后台生成静态,或者使用动态浏览查看该列表页,可以看到出现了刚才模板中调用的timelong字段,在这里需要注意,并不是所有字段都可以调用出来,这一点可以参阅前文的新增加模型部分(图9所示)
图9-列表页
修改好列表模板后,需要修改文章模板,我们依然复制article_article.htm为article_chv.htm为例,打开article_chv.htm文件,在适当的位置加入需要调用的字段,在文章模板中,可以调用该模型的任何字段。保存后生成文章页,新加入的调用就可以看到了。