刚学习完dedecms的标签语法,我有很多困惑,觉得标签的意义比较抽象,不知道如何用标签来写一些具体的内容。如果有一些数据库的编程经验,就知道一个很常用的编程范例—增删改查。比如说,我要建立的是书本的模型,有索书号,书名,类型……,之后要写一个网页来完成书本信息的增删改查,这篇文章主要解决这种问题。

一频道(内容模型)

我很长时间弄不清频道和栏目的区别。从网上找了一些解释如下:

栏目就是网站中导航划分出的模块,如百度中的新闻、网页、贴吧等就是栏目。

频道是栏目的类型。官方的定义是:频道指内容模型,网站的栏目都是基于不同的模型建立的。也就是说一个频道还可以衍生出多个栏目,一个栏目只对应于一个频道。

查到了以上定义后,我以为对频道和栏目已有较深刻的认识了。直到我遇到这个问题,“什么时候建立频道,什么时候建立栏目?”

频道对应于数据模型,当要建立一个新的数据模型,就要建立频道。如书本模型,它和文章模型,图片模型的数据表结构不同。一个新的模型有以下的元素:数据表,增删改代码。

而栏目是对应于功能而言的,就像百度中的新闻、网页、贴吧,什么时候要添加栏目还是比较明显的。3种模板属于栏目的元素。

“一个频道还可以衍生出多个栏目”这句话有点虚,实际中网页中的内容都很饱满,每个栏目的内容都可能很不同,除了实用的文章模型外,基本每个频道都为一个栏目而设。

在dedecms中,有频道>栏目>文章这几个基本的单位。每个单位都会用id号唯一标识,频道(cid,channel id),栏目(tid,type id),文章(aid,article id) 。

二添加模型

关于添加模型,不妨看下这篇文章。它主要讲操作步骤,我会结合操作讲讲原理。上面提到,一个模型有数据表,增删改代码这两个元素,下面就按这个思路发展。

点击了“增加新模型”后,会看到表单中的附加表,填dede_addonXX,XX就是前面填写的名字标识。Dedecms中的文章不是指具体的文章,更像是记录。如图片频道中,上传的一张图片就是一个文章。所以一篇文章由两部分组成,其一是基本信息,如作者,发布时间等,记录在dede_archives中,这个表称为主表。每个频道的文章信息,存在附加表中,如图片频道的附加表为dede_addonimages。

顺便说一下,在模型性质处有独立模型的选项,就是新建立的模型中,文章在dede_archives没有记录。可能见到dede_archives中多余的字段太多,不是每个模型都需要,才有这种设计。独立模型更多叫单表模型,缩写为sg,有专门的sgarclist。现在刚刚接触,就先不理它。

在“增加新模型”的表单提交后,会看到数据库中多了一个dede_addonXX的表,不要急着定义这个表的字段,因为dedecms会辅助我们完成这个过程。

现在大约来到“这篇文章”的第三点,依次进入 内容模型管理>dede_addonXX的修改>字段管理>添加新字段 就可以为dede_addonXX添加字段了。添加完一个字段提交后后,会回到字段管理的页面,看到“模型字段配置”,是一个代表刚才定义过程的标签,这是手动定义数据库表所没有的。总之,对附加表用该方法添加新字段会更好。

关于增删改的代码,在前面的档案发布/修改/管理出已经定义了。开始时,用archives_add.php,archives_edit.php和content_list.php。由于dedecms有自动表单功能,所以这个文件基本够用了。自动表单的意思是前面添加新字段时设置的字段,会在add,edit等表单中以控件形式出现,不需用户添加代码。如果觉得不够用,可以参照archives_add.php等DIY一下。

这样自定义的频道就可以用来生成栏目,像默认栏目一样好用。

对于增删改,这可能只是主模型的搭建,对于辅助模型也可以参照其他后台管理代码,像分类信息模型中,增加一个地区表。要搞清后台管理,有要费一番功夫。

  增删改功能不仅限于后台,前台也有这些功能。前台就不能用表单这种呆板的提交,可能要用到ajax。可参考系统顶踩功能和评论功能的实现。

三使用模型中的数据

增删改后还剩下查,这个功能的特点是不用填很多表单。数据的查询一般用标签完成,field,arclist,list及其衍生标签已经覆盖了不少情况。

在文章模板中能用field标签查询附加表的字段,而在列表模板中,也能通过arclist查询到附加表的字段,如下:

<tr>
{dede:arclist addfields='sjdz,yysj' channelid='1}
<td>商家地址:[field:sjdz/]</td>
<td>营业时间:[field:yysj/]</td>
{/dede:arclist}
</tr>

关键是addfields和channelid,addfields里面是你的自定义字段,channelid如果是普通文章就是1

当然也有不少情况是不够用的,要自定义标签。可看看下列文章:文章1文章2

 
 

(转) dedecms中自定义数据模型的更多相关文章

  1. 织梦 dedecms 中LOOP 万能标签循环 调用 arcurl标签(获取链接)

    在DEDECMS中,提供了loop万能循环标签,但是此循环标签只能循环出该表中的字段,而“[field:arcurl/]”链接标签并不能被解析出来,而DEDECMS官方论坛上也没有找到相关的解决办法, ...

  2. dedecms的自定义模块

    dedecms的自定义模块   1.在dedecms主目录下创建一个模块目录 2.在模块目录下创建如下目录 网站根目录/ |-自定义模块 |-control 控制器 |-model 模型 |-stat ...

  3. 16-CoreData之多表关联(存储自定义数据模型)

    多表关联 1.1-简介 什么是多表关联 在处理数据库的关系中,无非只有三种关系 一对一:一个老师只能在一个教室上课,不可能同时在两个教室上课 一对多:一个教室可以有多个学生,但一个学生只能在一个教室 ...

  4. Html中自定义鼠标的形状

    Html中自定义鼠标的形状 <html> <head> <title>自定义的鼠标形状</title> <meta http-equiv=&quo ...

  5. 教你一招:在PowerPoint中自定义可输入文本的占位符

    日常生活中,当我们设计多媒体课件时,默认的版式其实已经够用了.但是,很多时候,我们需要更加个性一点,所以,我们需要自定义很多东西.本文介绍在PowerPoint中自定义可输入文本的占位符. 一.占位符 ...

  6. android代码优化----ListView中自定义adapter的封装(ListView的模板写法)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  7. 在Eclipse中自定义类似syso的快捷代码模板

    sysout/syso syserr/ syse 点击菜单栏的“Window”->“Preferences”,打开“Preferences”对话框.在Preferences”对话框中点击“Jav ...

  8. 在.net桌面程序中自定义鼠标光标

    有的时候,一个自定义的鼠标光标能给你的程序增色不少.本文这里介绍一下如何在.net桌面程序中自定义鼠标光标.由于.net的桌面程序分为WinForm和WPF两种,这里分别介绍一下. WinForm程序 ...

  9. .net中自定义过滤器对Response内容进行处理

    原文:http://www.cnblogs.com/zgqys1980/archive/2008/09/02/1281895.html 代码DEMO:http://files.cnblogs.com/ ...

随机推荐

  1. 用nodejs,express,ejs,mongo,extjs实现了简单了网站后台管理系统

    源代码下载地址:http://download.csdn.net/detail/guoyongrong/6498611 这个系统其实是出于学习nodejs的目的而改写的系统. 原来的系统前端使用了ex ...

  2. js/bat批处理调用谷歌浏览器chrome批量打开网页测试web性能

    批处理批量打开网页 其实用java就可以搞定,但是这么一个轻巧的测试,js或者bat批处理去一次性打开几百个网页测试一下页面没必要上java 两者的区别,js的话,只能打开多个浏览器实例,不方便查看效 ...

  3. Mashmokh and Tokens

    Codeforces Round #240 (Div. 2) B;http://codeforces.com/problemset/problem/415/B 题意:老板一天发x张代币券,员工能用它来 ...

  4. Dungeons and Candies

    Zepto Code Rush 2014:http://codeforces.com/problemset/problem/436/C 题意:k个点,每个点都是一个n * m的char型矩阵.对与每个 ...

  5. 执行计划中常见index访问方式(转)

    近期有朋友对于单个表上的index各种情况比较模糊,这里对于单个表上,单个index出现的大多数情况进行了总结性测试,给出了测试结果,至于为什么出现这样的试验结果未做过多解释,给读者留下思考的空间.本 ...

  6. 修改css

    .content{ height: 100%; } .con{ border: 1px solid #eeeeee; display: inline-block; width:86.8%; ##修改这 ...

  7. 【转】深入了解android平台的jni---注册native函数

    原文网址:http://my.oschina.net/u/157503/blog/169041 注册native函数有两种方法:静态注册和动态注册. 1.静态注册方法 根据函数名找到对应的JNI函数: ...

  8. [Locked] Paint Fence

    Paint Fence There is a fence with n posts, each post can be painted with one of the k colors. You ha ...

  9. lightoj 1005 组合数学

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1005 #include <cstdio> #include <cst ...

  10. Rules

    我们之前处理异常的时候用到过Rules,当然还有很多其他规则.Rules允许弹性的添加或者重定义测试方法的行为.测试者可以重复使用或者扩展下面的某一个Rules,也可以写一个属于自己的规则. 这里先展 ...