基于开源内容管理系统的稿件征集平台建设研究
刘一闻
(新华通讯社技术实验室)
摘要:采用开源和免费软件搭建一个稿件征集平台,提供给图表新闻和漫画的采编人员用于集签约供稿人管理,稿件采集、入库和反馈。关键词:稿件征集 CMS PHP Drupal Mysql1引言
为了满足笔者所在单位的业务需求,给图表新闻和漫画的采编人员提供了一个集签约供稿人管理,稿件采集、入库和反馈于一体的稿件征集平台。本平台完全采用开源和免费软件搭建,包括HTTP服务器Apache,数据库服务器MySql,以及内容管理系统(CMS)Drupal。其中,Drupal用PHP开发,采用“微内核+模块”的系统架构,不同开发者贡献的模块可以通过Drupal的微内核协同工作,实现了产品的灵活、简单和实用,以及代码的标准化、模块化、可扩展性和可维护性。在深入了解Drupal的体系架构和API之后,采用“Drupal Core+第三方模块+自定义模块”的技术路线,对Drupal进行了深度定制,包括软件设计、自主模块编码、集成、测试工作等,实现了UI、工作流、权限、稿件入库、采用反馈等功能。2开源内容管理系统的比较
目前,开源内容管理系统(Cotent Management System,CMS)的主要开发语言是JAVA和PHP。针对本系统,对两种语言开发的CMS比较如下:1)出色的JAVA CMS多面向企业级文档管理,面对互联网应用的较少,且在易用性上远不及PHP CMS;2)在运行环境上,安装配置JRE环境比AMP环境复杂,并且JAVA主机对于软硬件的要求比PHP主机高,导致价格相对较高;3)对于主题和系统功能需要频繁调整的系统,PHP作为一种脚本语言,修改后能马上生效,而JAVA改一次代码重新启动一次服务器;4)JAVA CMS多采用Struts+Spring+Hibernate的MVC架构,比较复杂,学习曲线陡峭,代码量大,有的多达1G;而PHP CMS在保持结构清晰的同时,代码量在几十兆左右,学习和定制相对容易。在目前的PHP CMS中,Joomla,Drupal和Wordpress三者最为流行,Wordpress多用于个人博客发布,Joomla和Drupal是本项目重点考察范围,现从内容管理、访问控制和权限管理以及流程控制等三个方面比较如下:1、内容管理表1 内容管理功能的比较
Joomla | Drupal | |
内容类型 | 只支持一种内容类型——article。 | 默认支持article、page和blog三种内容类型,实例化后称为Node;支持自定义内容类型,比如,在给摄影部搭建的网站中,定义了“图表”、“漫画”、“动画”等内容类型。 |
内容分类 | 采用不限嵌套深度的Category对article进行分类,每一篇article只能属于一个category。 | 采用标签(Tag)对node进行分类,每个node可以同时贴上任意多个词汇表的Tag。 |
内容项 | article只支持标题和说明两个内容项。 | 每个内容类型可以添加任意多的内容项(field),可以自定义每个field的类型,比如,给“图表”内容类型添加了只支持JPG的“预览图”和支持CDR、AI、OBJ、3DS和3DM等5种格式的“图表RAW文件”两个特色内容项。 |
表2 访问控制的比较
Joomla | Drupal | |
用户角色 | 支持创建任意多个“用户组”(Group),可以是父子关系,也可以是平行关系。 | 支持创建任意多个“用户角色”(Role),都是平行关系。 |
内容访问控制 | 支持基于用户角色的对Article的访问控制,包括View、Create、Edit、Delete等。 | 基于用户角色,不仅支持对每种内容类型,更是支持对每一个field的访问控制。 |
后台管理 | Joomla采用“framework+Component+Module+Pluging”的系统架构,主要功能由“Component”提供,网站后台的管理功能默认由“Super User”用户组中的用户来完成。 | Drupal采用“框架+模块”的系统架构。Drupal的大部分功能由“模块”提供,每个“模块”针对不同用户角色可以开放或者关闭其管理功能。 |
表3 流程控制的比较
Joomla | Drupal | |
core自带 | Editor用户组的用户可以Create article,Publisher用户组的用户可以Edit、Publish article。 | 1)把Create、Edit、Publish、View、Unpublish、Delete等权限分给不同的角色,就可以实现简单的稿件采编签流程。2)自带Trigger Module,可以为某些系统“事件”设定对应的“动作”,比如,当用户注册时,给注册邮箱发送确认Email等。 |
第三方扩展 | 暂时没有发现。 | Rules Module,下载量过百万,逾十八万个站点上报安装了此模块。Rules实现了完整的Event-Condition-Action机制,可以自定义“事件”,“条件”和“动作”,支持复杂的流程控制。 |
3系统开发实践
3.1需求分析3.1.1系统参与者1)签约供稿人签约供稿人登录本系统上传稿件、查看稿件评论和采用情况反馈。2)编辑编辑登录本系统添加账户、查看稿件、给予评论、反馈采用情况。3)系统管理员系统管理员登录本系统进行系统定制、扩展和维护,包括创建角色、分配权限、确立工作流,功能模块安装和调试等。3.1.2系统功能1)登录2)人员管理创建帐户和角色。3)权限管理给每个角色分配访问权限。4)内容管理包括创建内容类型,稿件上传、存储和入库,发表评论,反馈采用情况。5)工作流管理对不同的系统事件,依据不同的条件,触发相应的响应动作。3.2技术方案在产品形态上,考虑到用户的地理位置分布、年龄阶段和使用习惯,本系统应该是一个B/S结构的互联网应用。在技术路线的选择上,考虑到用户规模,时间和资金成本,以及产品部署和迭代升级等因素,基础软件和应用系统尽量采用成熟且使用广泛的开源或者免费产品,尤其是应用系统必须是开放API的框架结构,支持定制和功能扩展。基于上述比较和分析,系统采用如下技术方案:3.2.1基础平台为了突出重点,系统的软硬件基础平台采用“Linux+Apache+PHP+Mysql”的模式,如下图所示:图1 基础平台
3.2.2应用软件平台本系统采用PHP语言编写的开源CMS——Drupal作为应用软件平台。Drupal采用“微内核+模块”的系统架构,实现了产品的灵活、简单和实用,以及代码的标准化、模块化、可扩展性和可维护性。Drupal的功能模块包括内容管理、用户管理、工作流、访问控制、论坛、新闻聚合、社交、电子商务等;这些由不同开发者贡献的模块可以通过Drupal的微内核协同工作;从这些特点看来,Drupal远远超出一般CMS的范畴,称其为WebOS更合适。3.3关键功能模块设计3.3.1内容模型Drupal使用“内容类型”定义和描述具体的网站内容,除内置的Page、Article、Book等内容类型外,支持自定义内容类型,根据实际业务需要,需要添加图表漫画和素材两种内容类型。除了通用的标题和说明外,每种内容类型可以添加任意数量和类型的field(内容项)。在本系统中,给“素材”定义的fields如下表所示:表4 “素材”类型包含的fields
名称 | 类型 | 显示方式 | 备注 |
稿件反馈 | term reference | radio buttons | |
标题 | 文本类型 | ||
说明 | 长文本类型 | Text area | |
素材图 | image | image | 只允许上传JPG格式的图片 |
图2 “素材”类型配置界面
给“图表漫画”定义的fields如下图所示表5 “图表漫画”类型包含的fields
名称 | 类型 | 显示方式 | 备注 |
稿件反馈 | term reference | radio buttons | |
标题 | 文本类型 | ||
说明 | 长文本类型 | Text area | |
附图 | image | image | 只允许上传JPG格式的图片 |
矢量图 | file | file | 只允许以CDR、AI、OBJ、3DS或者3DM格式上传 |
图3 “图表漫画”类型配置界面
3.3.2访问权限Drupal支持为系统用户创建任意多个平行关系的role(用户角色),每个模块对于不同的用户角色可以设定不同的访问权限。例如,针对任意的内容类型,甚至是内容类型中的内容项,都可以设定查看、创建、编辑、删除等权限。在本系统中,创建三个角色:签约用户、摄影部用户和摄影部管理用户,权限分配如下图所示。表6 系统角色部分权限设置
管理用户 | 采编用户 | 签约用户 | |
添加用户 | √ | √ | × |
上传内容 | √ | √ | √ |
查看自己创建的内容 | √ | √ | √ |
查看其他人创建的内容 | √ | √ | × |
编辑自己创建的内容 | √ | √ | × |
编辑其他人创建的内容 | √ | √ | × |
删除自己创建的内容 | × | × | × |
删除其他人创建的内容 | × | × | × |
增添公告板 | √ | × | × |
稿件反馈的创建 | √ | × | × |
稿件反馈的编辑 | √ | √ | × |
稿件反馈的查看 | √ | √ | √ |
图4 “稿件反馈”使用效果
3.3.4工作流和CNML封装本系统采用工作流技术实现了稿件上传后的的CNML封装入库功能。Drupal自带Trigger Module(触发器模块),可以为预定义的“系统事件”设定对应的“动作”,例如,当用户注册时,给注册邮箱发送确认Email等。然而,第三方模块Rules是对Trigger Module的扩展,其实现了完整的Event-Condition-Action机制,可以自定义“事件”,“条件”和“动作”,支持复杂的流程控制,如下图所示:图5 ECA图示
按照ECA模式,在系统中设定了“事件”——用户保存新建的内容和“条件”——判断内容类型是漫画还是图表,按照Rules模块的规则自定义了“动作”——解析新建内容的每个field,并且用漫画或者图表模板封装成CNML,如下图所示。图6 CNML封装流程
配置界面如下图所示:图7 CNML封装的配置界面
4总结
1、互联网产品的开发模式本系统采用了互联网产品开发过程中普遍采用的“敏捷开发模式”,团队中设计、前台开发、后台开发、测试等各角色紧密合作,不断地倾听用户的反馈,不断地调整修改,以决定产品的发展方向。图8 开发模式
2、自主掌控、架构灵活、可扩展性强本系统完全采用开源免费软件构建,通过阅读源代码可以实现对软件系统深度定制和开发,极大提高了相应用户需求的速度。Drupal作为本网站的开发框架,其用户广泛,可利用模块较为齐全。系统的功能以模块的形式安装在Drupal中,架构灵活,具有良好的可扩展性。3、松耦合采用完全可配置的工作流引擎,根据不同的系统事件和条件激发不同的动作,实现了“事件”和“动作”的松耦合,极大的提高了系统的灵活性;4、安全漏洞响应及时由于drupal有强大的定制开发能力,众多有实力的网站都选择其为网站开发平台,这样许多web专家都在为其贡献模块,使其各种模块比较完备,迭代开发快,出现安全漏洞时可以及时响应更新。5、良好的用户体验进行系统UI设计时,采用“尽量贴合用户互联网产品使用习惯”的原则,无论是稿件上传还是管理人员都无需培训,即可使用。并且向稿件管理人员开放部分网站后台功能,使之能进行个性化配置。结合drupal固有的一些功能和UI设计思路,可给使用者良好的体验。 参考文献方擎.《Drupal高手建站技术手册》.第1版.北京:电子工业出版社:2010[美] 希日夫(Ric Shreves),[美] 但伍迪(Brice Dunwoodie)《Drupal 7宝典》.第1版.北京:清华大学出版社:2012 编辑:中国新闻技术工作者联合会
评论 点击评论