中小企业网站内容管理系统的设计与实现
摘要:本文在分析中小企业网站建设需求特点的基础上,讨论了中小企业cms系统的内容管理方式,给出了自定义内容模型和属性的设计;分析了中小企业网站内容分类的管理和模板设置及绑定的方法,给出了基于用户角色和网站内容分类的系统权限控制机制。
关键词:内容模型;模板管理;分类管理;权限控制
1 中小企业网站建设需求的特点
目前企业网站建设的典型需求通常可以归结为产品(服务)的查询展示、品牌宣传、远程商务服务、b2b或b2c业务以及企业门户建设等五个方面。
由于中小型企业的企业规模较小、信息化应用程度较低、缺乏专业的信息化部门等原因,中小企业的网站建设通常仅局限于产品(服务)的查询展示、品牌宣传和企业门户三个方面,在远程商务和b2b、b2c业务的开展方面一般没有需求。
在网站的管理和运维上,中小型企业通常要求自己的网站具有操作简便、无需专人管理[1]、不需要专门购置服务器和搭建网络环境、不需要专门的推广措施等特点,在较少的人员、经费和时间投入的前提下,达到通过网络宣传企业产品、展示企业形象和促进产品销售的目的。
有鉴于此,0830cms系统除了应满足系统的扩展性、二次开发支持、信息发布和管理等cms的基本要求外,还应特别注意对网站建设成本、网站运维成本的控制,降低对网站运行环境的要求,优化
对网站推广的支持等问题。
2 数据管理系统的设计实现
2.1 模型和属性
数据管理系统是cms的核心,对中小企业网站可能存放的任何内容均应提供相应的管理支持。
从逻辑上,“内容”实际上包括数据的存储、数据的处理和数据的展示三个方面。
不同的内容类型意味着三者不完全相同或者完全不同。
一般来说,中小企业网站需要支持的内容类型(模型)可以归结为图文资讯、产品信息、文件等已知类型以及支持中小企业其他业务(如人员招聘)的、未知的内容类型[熊晓飞.基于web的内容管理系统的设计和实现.北京:北京交通大学.2010]。
从数据存储角度看,任何模型的数据都可以分为两部分:属性数据和内容数据。
以图文资讯模型和产品信息模型为例:图文资讯通常具有标题、作者、来源、点击、审核、附件、摘要、上传者、修改者等多种属性数据,同时具有正文这一内容数据。
产品信息类型通常具有标题、型号、规格、价格、销售数量、库存数量、产品图片、折扣信息等属性数据,以及产品介绍这一内容数据。
对不同的企业,属性数据可能会有所不同。
例如,可能有企业需要在图文资讯中加入“上传部门”这一属性,在产品信息模型中加入“产品颜色”这一属性。
从数据处理的角度,不同的属性数据必然导致不同的数据处理逻辑。
例如加入“上传部门”,则需要配套相应的数据校验、数据库
读写操作等支持;而“产品颜色”则需要绑定一个颜色拾取器或给出一个颜色下拉列表供用户选择。
2.2 模型管理器
0830cms系统提供模型管理器以支持对内容模型及其属性数据的维护和定制。
模型管理器支持全新定义新的内容模型,或继承已有内容模型的配置定义子内容模型。
对系统中的所有模型,模型管理器支持绑定后台业务逻辑。
即,可以为模型绑定后台的动作控制器,完成不同的业务处理。
模型控制器提供属性配置界面,可以为模型增加、修改、删除属性字段。
对每一个属性,可以为其附加脚本(js脚本或php脚本),从而实现该属性的数据处理逻辑。
可以指定数据的类型(与mysql 数据库支持的数据类型一致)、长度、数据是否必填、默认值、调用编辑器类型等其他特性,并绑定帮助信息和错误提示信息,以辅助用户对数据进行管理。
2.3 模型的运作
对任何模型,可执行的操作有列表、发布、修改、删除、排序、搜索和审核等。
每种操作有一个动作控制器实现。
在动作控制器中,首先将根据用户请求获取要操作模型的编号,据此查找操作所涉及的属性字段相关信息。
以发布信息为例:前置控制器将用户请求路由到动作控制器createinfo.action.php中,createinfo.action.php的构造方法
__construct()解析用户请求,提取其中的mid参数,从模型配置表中找到要操作的模型及其属性字段信息(以产品信息模型为例),调用add()方法处理。
add()方法遍历每一个属性字段,将其数据类型、数据长度、附加脚本、默认值、是否为空、调用编辑器类型等发送至createinfo.tpl模板。
createinfo.tpl模板包含一个空表单,其action指向createinfo.action.php的save()方法。
模板解析引擎遍历每一个属性字段,根据字段的各方面要求在createinfo.tpl中逐一为其创建表单域,并为各表单域配套相应的附加脚本。
最终生成包含产品信息模型中指定的所有属性字段的表单供用户填写。
用户填写完毕后表单数据将被发送至createinfo.action.php的save()方法中。
save()方法将接收到的表单数据分为属性数据和内容数据。
对属性数据,save()方法将其按属性id+属性值的形式序列化后存入内容数据表的properies字段,对内容数据,直接存入内容数据表的content字段。
至此,信息发布完成。
3 分类管理的设计与实现
3.1 分类的移动
在分类树上,分类所在位置仅取决于其父节点。
因此分类的移动只需要修改其父节点编号即可。
唯一需要注意的是,分类不能移动到自身或自身的后代分支中。
分类节点移动后,其所有的后代分支也将随之移动。
3.2 模型绑定
通常,每个分类可以容纳的数据类型,由分类绑定的模型决定,每个分类可以绑定一种模型。
在分类管理器中,给出系统中存在的模型列表供用户选择。
由于各模型的数据不尽相同,因此当某个分类中已经存储了数据,则不能再对其绑定的模型进行修改。
3.3 模板绑定
对于整站风格,0830cms通过站点基本配置指定。
即,在站点建立时,将同一套风格的所有模板放置在一个文件夹中,然后在站点配置管理器中,指定站点默认风格文件夹即可。
对各分类页面的显示效果,则通过为分类绑定模板实现[2]。
在新建或修改分类时,分类管理器将扫描站点风格文件夹中的所有文件,并给出文件名和文件的基本信息。
用户可以分别为分类的频道页、列表页和内容页指定使用的模板。
模板和分类绑定后,控制器接收到用户对某个分类的访问请求并完成数据处理之后,则调用模板解析引擎对该分类绑定的模板进行解析,将处理好的数据发送到模板中,生成html页面并响应给用户[3]。
4 用户管理和权限控制
大多数网站的用户管理和权限控制都是基于用户角色构建的。
根据用户所属的角色确定用户具有的操作权限。
这种方式不能很好的适应中小企业网站的要求。
例如:在中小企业中,通常“企业简介”、“企业文化”等分类由行政办公室人员管理和审核,而“产品信息”等分类由销售部门管理和审核。
但基于“信息管理员”角色,特定
用户即可获得对所有分类信息的审核权。
这明显违反了“最小权限”规则。
系统将每个动作控制器的每一个方法,都作为一个检查点,校验用户操作权限。
同时,对系统中的每个分类,都动态生成一个权限检查点。
这样,即可实现对分类的权限控制。
参考文献
[1]杨方,左晓华.河北省经济欠发达地区中小企业网站建设情况的调查报告[j].中小企业管理与科技.2011(10).
[2]张玉孔.cms在企业网站建设中的应用研究[j].潍坊学院学报.2009:9(6).
[3]李国柱.基于内容管理的web信息发布系统的设计与实现[d].苏州:苏州大学.2004.。