转载: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. [violet6] 故乡的梦

    题目 描述 不知每日疲于在城市的水泥森林里奔波的你会不会有时也曾向往过乡村的生活.你会不会幻想过,在夏日一个静谧的午后,你沉睡于乡间路边的树荫里,一片叶子落在了你的肩上, 而你正做着一个悠长的梦,一个 ...

  2. 2019/10/9 CSP-S 模拟测

    T1:最大约数和 给定一个正整数 S,现在要求你选出若干个互不相同的正整数,使得它们的和不大于 S,而且每个数的因数(不包括本身)之和最大.S <= 1000 分析: 其实考完才听他们说是背包, ...

  3. 01_Spring入门程序

    一.什么是Spring? 1.Spring是分层的JavaSE/EE full-stack(一站式) 轻量级开源框架 2.spring是一个高度灵活的轻量级框架,其目的是降低企业级应用开发的复杂度. ...

  4. Python学习day04 - Python基础(2)数据类型基础

    <!doctype html>day04 - 博客 figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { ...

  5. Error: Could not link: /usr/local/share/doc/homebrew

    mac 执行brew update 报错 Error: Could not link: /usr/local/share/doc/homebrew 更新brew,报错 Error: Could not ...

  6. MathType插件安装

    1 安装包下载 版本号:7.4 下载 提取码:fxma 2 安装方法 用安装包内的Key激活即可.软件激活后不能升级. 注意:必须断网或者加入防火墙阻止联网使用! 3 可能遇到的问题 当安装完Math ...

  7. 08-5-switch

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. Linux-c glib库hash表GHashTable介绍

    百度云glib  链接:https://pan.baidu.com/s/1W9qdlMKWRKIFykenTVuWNQ 密码:ol6y hash表是一种提供key-value访问的数据结构,通过指定的 ...

  9. c语言string的函数

    PS:本文包含了大部分strings函数的说明,并附带举例说明.本来想自己整理一下的,发现已经有前辈整理过了,就转了过来.修改了原文一些源码的问题,主要是用char *字义字符串的问题,导致程序运行时 ...

  10. 同一服务器不同域名session共享

    Tomcat下,不同的二级域名之间或根域与子域之间,Session默认是不共享的,因为Cookie名称为JSESSIONID的Cookie根域是默认是没设置 的,访问不同的二级域名,其Cookie就重 ...