如果您觉得文章对您有点用,麻烦在您阅读、收藏、转发的时候,顺手帮忙点个赞、留个言、加关注,这是我继续写下去的绝佳动力。
一、内容模型的作用
从SiteServer CMS 源码来解读的话,内容模型是衔接栏目和辅助表的桥梁。利用SiteServer CMS进行内容管理的话,内容一定是要附属于某个栏目(也即发内容时必须选择一个具体的栏目)。但具体到每个栏目的内容到底存在哪个辅助表里呢?SiteServer CMS是通过为每个栏目设置一个内容模型,每个内容模型对应一张辅助表,从而间接实现了每个栏目的内容存储在哪张辅助表的目的。
从上图可以看到,每个内容模型需要选择一张辅助表。然后为每个栏目设置一个数据模型,如下图所示:
通过以上两步的操作之后,发布在此栏目下的内容就会自动存储在此栏目的内容模型对应的辅助表中了。
思考一下:栏目、内容模型、辅助表的对应关系
为什么需要数据模型在栏目和辅助表中间做桥梁呢?为什么不直接让栏目对应辅助表呢?个人认为没有必要引进内容模型这个概念,大家可以发表自己的看法。**
二、再谈辅助表类型
通过前面文章的讲解我们知道,SiteServer CMS系统的辅助表类型有:内容、投票、招聘、信息公开、互动交流、自定义,而在创建数据模型的界面里,辅助表类型只能选择内容和自定义。这说明什么问题呢?
这表示创建内容模型时不能选择投票、招聘、信息公开、互动交流四种类型的辅助表来存储数据,系统会自动为这四种类型辅助表分别创建一个内容模型,如下图所示是系统为通用站点自动创建的投票、招聘两个数据模型:
那如果需要为这些系统自动创建的数据模型设置自己创建的辅助表,怎么操作呢?其实在前面的文章深入讲解SiteServer CMS:辅助表也有讲到,就是在创建站点时需要统一为每种辅助表类型设置一个默认的辅助表,如下图:
从上图可以看到,投票、招聘、信息公开、互动交流四种类型辅助表的默认表设置好了之后,创建站点时系统为这四张辅助表分别创建一个内容模型,然后整个站点栏目如果需要使用这四种内容模型的话只能选择系统默认创建的,管理员不能为这四种类型的辅助表再创建内容模型了。
相比之下,除子系统会为默认的内容辅助表创建叫 “内容”、“图片” 的两个内容模型之外,管理员还可以:
- 为默认的内容辅助表创建内容模型;
- 为非默认的内容辅助表创建内容模型;
- 为自定义类型的辅助表创建内容模型;
这三种操作有什么区别吗?当然有,只有第一种操作,为默认的内容辅助表创建内容模型,这种内容模型的辅助表和系统自动创建的名为 “内容” 的内容模型是同一张辅助表,都是站点默认的内容辅助表。这又意味着什么呢?在前面的文章深入讲解SiteServer CMS:辅助表提到,成为站点的默认内容辅助表这样有两个好处:
- 站点创建栏目时数据默认存储在此表中,除非手动修改成其他表;
- 全站搜索默认只搜索站点默认内容辅助表里的内容;
三、内容字段管理
严格来说,内容字段管理和内容模型是没有关系的,这里的内容字段是指每一个栏目所存储的内容具有哪些字段,真正决定有哪些字段的是存储这些内容的辅助表。为什么会把这个菜单放在内容模型设置下面呢?大概是因为栏目不是直接对应辅助表,而是栏目对应内容模型再通过内容模型对应辅助这种关系吧。
从上图可以看到,可以为每一个栏目进行内容字段管理操作。那到底内容字段管理能进行哪些管理呢?而且从图上看起来,和辅助表的字段管理界面几乎就是一模一样,两者之间到底又是什么关系呢?
先来说说内容字段管理能进行的管理吧:
- 使用辅助表字段的默认显示样式:这意味着此栏目的内容字段管理什么都不用操作,直接忽略。这也是大部分栏目大部分情况下的选项;要不然干嘛要选择这个辅助表对应的内容模型呢?
- 修改部分字段的默认显示样式:比如某个栏目虽然使用这个辅助表来存储数据,但是有两个字段不需要,这时可以通过对不需要的字段进行添加显示样式操作:把是否启用设置成否即可;
- 增加虚拟字段:比如某个栏目在使用这个辅助表全部字段后,还缺少一个字段,这个字段只有这一个栏目或少数几个栏目需要,通过前面对于辅助表内容的讲解知道这不能在辅助表层面去操作。所以只能在这个栏目的内容字段管理进行添加虚拟字段操作;
对于后面两种操作,有一个共同点那就是不使用辅助表字段的默认显示样式,也即栏目重新定义了自己的字段显示样式。那使用和不使用辅助表字段的默认显示样式这两种情况不同之处:
如果使用辅助表字段的默认显示样式,则以后辅助表进行字段的任何操作(增加和删除字段,以及修改字段和调整字段显示样式)都能反应的所有使用此辅助表默认样式的栏目中;
如果栏目重新定义了自己的字段显示样式,那么除了删除辅助表字段外,其他辅助表字段任何操作都不会影响到当前栏目的显示样式。
理想很丰满,现实却很骨感。从SiteServer CMS源码来看,官方设计的本意使用和不使用辅助表字段的默认显示样式这两种情况不同之处应该是上面这样的结论。但事实上却有Bug,删除辅助表中一个真实字段,所有使用默认显示样式的栏目却还能显示出此字段来。不能不说这是一个系统Bug。
现在再来回答一下刚才说的第二个问题:内容字段管理和辅助表的字段管理界面几乎就是一模一样,两者之间到底又是什么关系呢?在回答这个问题之前,我们需要明白SiteServer CMS系统所有功能和数据的可见范围有三个级别:
- 栏目级别:功能和数据只能在本栏目可见,相应设置也只能在本栏目起作用;
- 站点级别:功能和数据只能在本站点可见,相应设置也只能在本站点起作用;
- 系统级别:也叫平台级别,功能和数据在全系统可见和起使用;
有了上面的三个级别,很好判断出内容字段管理是栏目别级的功能,只能针对本栏目起作用,对于其他栏目或站点不可见。比如你在某个栏目下面创建了一个虚拟字段或者关闭了一个字段,但不会影响到其他栏目的内容字段。
同理,辅助表的字段管理就是系统级别的了,给辅助表添加了一个字段(不管真实字段还是虚拟字段),只要使用这个辅助表的站点,都能看到此字段。
内容模型里的内容字段管理讲完了,下一篇接着讲栏目字段管理和联动字段管理……
开心一笑
有一美女同事,孩子三岁左右,身材依旧火辣,那天她带儿子来单位,我陪他玩,小孩子问我,叔叔你最喜欢什么动物啊,我想了想很猥琐的告诉他,叔叔最喜欢羊驼,事后他妈追了我三条街……