转载:https://blog.csdn.net/dongdong9223/article/details/76578120

jeecms是一款很不错的cms产品,之前在文章《基于Java的门户网站管理系统——JEECMS源码版的搭建步骤》中讲述了jeecms的搭建,那个时候还是V6版本,现在已经是V8版本了,功能又比之前增强了不少。

今天来讲解一下jeecms中的“内容”、“栏目”、“模型”、“内容模型”、“栏目模型”这几者之间的关系,它们都与文章的编辑息息相关。注意我这里使用的是jeecms的最新版:v8.1版本。

1 jeecms系统中的内容和栏目
首先来介绍一下“内容”与“栏目”。

1.1 内容
首先登陆首页:

如图,点击上方的“内容”导航,然后鼠标放在“发布内容”上,就会弹出当前有哪些栏目,点击一个栏目,比如“新闻”,进入文章编辑页面。个人觉得这里设计的不是很好,这一步正常应该就选中了栏目了,但是到了编辑页面还要再选择一下栏目,如图:

首先选择一个栏目,能够看到文章编辑页面里还是有很多填写项的,“栏目”、“标题”都是必填的。注意这里面的这些填写项,是这个“内容”对应的:

内容模型

后面会提到关于“内容模型”的配置。

1.2 栏目
点击导航里的“栏目”,进入“栏目”信息中,如图:

这里可以点击左上方的“添加栏目”添加一个栏目,也可以修改已有的栏目。比如点击栏目名称为“新闻”的栏目右边的修改,进入其编辑页面,如图:

可以编辑这个栏目的内容,添加栏目时也是一样。

就像“内容模型”一样,这里的这些填写项叫做:

栏目模型

之前讲过,“内容模型”标志的是内容的属性,是你新建一篇文章时希望都编辑到哪些内容。类似于“内容模型”,“栏目模型”标志的是栏目的属性,是你新创建一个栏目时都希望这个栏目中都具有哪些内容。

2 模型管理
再来看看jeecms中的“模型管理”,“模型”的作用其实刚才已经提到了,点击上侧导航里的“配置”,然后点击左侧的“模型管理”,如图:

这里所蓝岛的“栏目模型”和“内容模型”,就是我们之前所提到的。“栏目模型”和“内容模型”具体都要设置哪些填写项,就是在这里分别去动态配置的。

比如增加“栏目”要填“栏目名称”啦、“访问路径”啦、“meta描述”啦什么的,增加“内容”时要填“标题”啦、“摘要”啦、“作者”啦什么的,这些填写项就分别是“栏目”和“内容”各自的“栏目模型”和“内容模型”进行设置。

模型的信息在数据库中都是记录在:

jc_model
jc_model_item

这两张表里面的,它们是主子表关系。其中“jc_model”是主表,记录所有模型名称,“jc_model”是字表,记录了所有具体的模型项信息,比如“所属的模型的id”“模型项标签”、“是否为栏目模型(不属于的话当然就是内容模型)”。“栏目模型”的模型项和“内容模型”的模型项都保存在这张表里面。

我们这里拿“内容模型”简单说一下。

2.1 内容模型
我们点击模型名称为“新闻”的右边的“内容模型”,如图:

页面下面部分,如图:

这里要说明一下,这个显示内容模型具体信息的网页页面在:

{jeecms}/WebRoot/WEB-INF/jeecms_sys/item/list_content.html
1
已经设置为“内容模型”的信息通过下面的html来显示:

<#list list as item>
<tr>
<td align="center"><input type="checkbox" name="ids" value="${item.id}"/></td>
<td align="center">${item.field}</td>
<td align="center"><@s.m "cmsModelItem.type${item.dataType}"/></td>
<td align="center"><input type="text" name="label" value="${item.label}" style="width:100px"/></td>
<td align="center">
<input type="text" name="priority" value="${item.priority}" style="width:40px"/>
<input type="hidden" name="wids" value="${item.id}"/>
</td>
<td align="center">
<input type="checkbox" onclick="$('#s${item_index}').val(this.checked)"<#if item.single> checked="checked"</#if>/>
<input type="hidden" id="s${item_index}" name="single" value="${item.single?string('true','false')}"/>
</td>
<td align="center">
<input type="checkbox" onclick="$('#d${item_index}').val(this.checked)"<#if item.display> checked="checked"</#if>/>
<input type="hidden" id="d${item_index}" name="display" value="${item.display?string('true','false')}"/>
</td>
<td align="center">
<a href="v_edit.do?id=${item.id}" class="pn-opt"><@s.m "global.edit"/></a> |
<a href="o_delete.do?ids=${item.id}&modelId=${modelId}&isChannel=${isChannel?string('true','false')}" class="pn-opt" onclick="if(!$.confirmToUrl(this.href)) {return false;}"><@s.m "global.delete"/></a>
</td>
</tr>
</#list>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
后面的一堆就是判断“内容模型”信息的,比如:

<#if !fieldList?seq_contains('txt1')>
<tr>
<td align="center"><input type="checkbox" onclick="disInput(this);" checked="checked"/></td>
<td align="center" class="dis">txt1</td>
<td align="center" class="dis"><@s.m "cmsModelItem.type4"/></td>
<td align="center"><input class="dis" type="text" name="labels" value="<@s.m "content.txt1"/>" style="width:100px"/></td>
<td align="center"><input class="dis" type="text" name="prioritys" value="10" style="width:40px"/></td>
<td align="center">
<input class="dis" type="checkbox" checked="checked" onclick="$('#singles${i}').val(this.checked)"/>
<input class="dis" type="hidden" id="singles${i}" name="singles" value="true"/>
</td>
<td align="center">
<input class="dis" type="checkbox" checked="checked" onclick="$('#displays${i}').val(this.checked)"/>
<input class="dis" type="hidden" id="displays${i}" name="displays" value="true"/>
</td>
<td align="center">
<input class="dis" type="hidden" name="fields" value="txt1"/>
<input class="dis" type="hidden" name="dataTypes" value="4"/>
</td>
</tr>
<#assign i=i+1/>
</#if>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
这里面有一段freemarker的代码:

<#if !fieldList?seq_contains('txt1')>
1
就是在判断当前“内容模型”中是否用到了txt1,如果没有用到,就显示在“系统默认字段”里面。

这里面的逻辑我的理解是,jeecms的“内容模型”是有一些默认的信息的,在这个list_content.html中会判断这些默认的信息有没有都已经正式添加到了“内容模型”里面,如果没有添加,就现实在“系统默认字段”中,让使用者知悉。

对于“栏目模型”也是一样的,不同的是现实在:

{jeecms}/WebRoot/WEB-INF/jeecms_sys/item/list_channel.html
1
这个页面里面。

3 模型、栏目模型、内容模型、栏目、内容几者之间的关系
我想,在怎么解释也不如用下面这张图来概括更合适了:

其中:

模型:“模型”里面有“栏目模型”和“内容模型”两种模型项,“模型”信息保存在主表“jc_model”中,模型项信息保存在子表“jc_model_item”中

栏目模型:“栏目模型”模型项,标记“栏目”的元数据信息

内容模型:“内容模型”模型项,标记“内容”的元数据信息

栏目:“栏目”信息在“jc_channel”及其子表中

内容:“内容”信息在jc_content及其子表中,文章的内容保存在“jc_content_txt”中

至此jeecms中的内容、栏目、模型之间的关系就简单介绍完了。
---------------------
作者:我是干勾鱼
来源:CSDN
原文:https://blog.csdn.net/dongdong9223/article/details/76578120
版权声明:本文为博主原创文章,转载请附上博文链接!

jeecms系统使用介绍——jeecms中的内容、栏目、模型之间的关系的更多相关文章

  1. jeecms系统使用介绍——通过二次开发实现对word、pdf、txt等上传附件的全文检索

    转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/76912307 本文出自[我是干勾鱼的博客] 之前在文章<基于Java的门户 ...

  2. Window系统、主函数和窗体函数这三者之间的关系

    理解Window系统.主窗体.窗体函数这三者之间的关系,对于编写Windows程序十分重要. 主函数和窗体函数都是由Windows系统来调用的函数.仅仅只是主函数是程序启动之后.系统首先调用的函数: ...

  3. Django之博客系统:在网站中分享内容(一)

    在models.py中添加image模型: class Image(models.Model): user=models.ForeignKey(settings.AUTH_USER_MODEL,rel ...

  4. java学习之Java中JDK,JRE和JVM之间的关系(转载)

    最近要重新抓一下java,大量扫技术文档,保存下来供自己查阅.以下转载自http://www.cnblogs.com/xiaofeixiang/p/4085159.html 初学JAVA很容易被其中的 ...

  5. Java中JDK,JRE和JVM之间的关系

    初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧,JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Envi ...

  6. Java中JDK,JRE和JVM之间的关系-(转载)

    初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧,JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Envi ...

  7. pygame中多个class类之间的关系

    用一个实例介绍一下有关pygame中不同类之间的通信,详细介绍在代码段有标注,感兴趣的可以复制代码试试: import pygame import sys # -------------------- ...

  8. Android 中Activity,Window和View之间的关系

    转自:http://hi.baidu.com/xiaofanqing/blog/item/8261ac114ab14f64cb80c435.html 我这里根据我个人的理解来讲讲我个人对这3个概念的理 ...

  9. 页面中多个script块之间的关系

     一:函数声明与函数定义表达式在函数调用间的区别 <script type="text/javascript"> doA(); var doA = function(a ...

随机推荐

  1. python中遇到的问题:IndentationError: unexpected indent

    在Python中写下列代码的时候,出现错误:IndentationError: unexpected indent 分析:IndentationError是缩进的错误,查看源代码发现names开始的这 ...

  2. leetcode-109-有序链表转二叉搜索树

    ---恢复内容开始--- 题目描述: 方法一:O(n) O(n) class Solution: def sortedListToBST(self, head: ListNode) -> Tre ...

  3. A*算法——第K短路

    例题 JZOJ senior 1163第K短路 题目描述 Bessie 来到一个小农场,有时她想回老家看看她的一位好友.她不想太早地回到老家,因为她喜欢途中的美丽风景.她决定选择K短路径,而不是最短路 ...

  4. Python-面向对象之封装与多态

    目录 组合 什么是组合 使用组合的目的 如何使用组合 封装 什么是封装 为什么要封装 如何封装 访问限制机制 什么是访问限制机制 访问限制机制的目的 如何使用访问限制 property 什么是prop ...

  5. MySQL其他和备份

    目录 事务 存储引擎 InnoDB存储引擎 数据存储形式 锁的粒度 事务 数据的存储特点 MyISAM存储引擎 数据存储形式 锁的粒度 事务 数据的存储特点 其他 对比与选择 视图 触发器 存储过程 ...

  6. mysql联表查询,使用phpStudy自带的

    一.内联结.外联结.左联结.右联结的含义及区别在SQL标准中规划的(Join)联结大致分为下面四种:1.内联结:将两个表中存在联结关系的字段符合联结关系的那些记录形成记录集的联结.2.外联结:分为外左 ...

  7. markdown常用知识点

    为什么要用markdown写开发文档? 1.可以在git上在线预览,docx文档需要下载才能看见: 2. .md文档每次修改之后能被git管理,可追踪修改内容和修改人,但是docx不能追踪修改内容. ...

  8. js 面向对象几种数据模式

    一.单例模式: 把描述同一事物的属性和方法放在同一内存空间下,实现了分组的作用,防止同一属性或者方法冲突.我们把这种分组编写代码的模式叫做单例模式即普通的对象. 单例模式是项目开发中最常用的一种开发模 ...

  9. css实现图文混排

    css实现图文混排 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w ...

  10. System.Web.Mvc.FileResultc.sc

    ylbtech-System.Web.Mvc.FileResultc.sc 1.程序集 System.Web.Mvc, Version=5.2.3.0, Culture=neutral, Public ...