静动态页面结合

1  动态功能模板化

  大部分网站除了向用户展现内容以供阅读以外,还需要提供一些动态功能便于和浏览者互动,获取浏览者的反馈,以增强网站的黏性。典型的互动应用包括投 票、评论、留言、会员注册等。这些动态功能由一系列的动态页面组成,需要和静态的内容页面在外观和用户体验上保持一致,使整个网站形成一个有机整体。另一 方面,这些互动功能在同一个CMS系统下的不同的网站中又可能会有不同的布局和样式。

  目前市面上的其他CMS系统对于静动态页面的融合支持非常有限,一般的做法是:由CMS生成一个头部和尾部片段,传输到动态功能相应的目录下,然后修改动态页面,使其包含这些片段,以达到页面头部和尾部一致的效果。

  ZCMS通过高性能的模板机制,创造性地实现了动态功能的模板化。动态功能的业务逻辑和界面展示实现了完全分离,界面展示部分通过模板动态生成,同一 个功能在不同的站点下可以有不同的模板。动态功能模板和静态功能模板遵循完全一样的规则,在同一个模板引擎中运行,能够在实现静态模板的所有效果的同时又 能输出动态功能中的各项数据。通过动态功能模板化,ZCMS实现了全站页面从运行机制、相互引用、风格样式三方面的全面融合。

2  静动态互相引用

  在大型网站中,静态功能和动态功能可能部署在不同的域名下。因此ZCMS提供了${FrontAppContext}变量,此变量能够输出互动功能的 URL前缀,不论互动功能是否与静态页面在同一台服务器,也不论动态功能是前端分离部署还是集群部署,模板制作人员通过此变量都能够正确地引用互动功能的 URL。

  ZCMS自带的所有动态功能都已经实现了模板化,例如留言、评论、调查、会员注册、会员登录、会员个人中心、投稿等。用户可以通过复制自带模板到站点 下,然后修改站点下的模板的方式,实现各功能在不同站点下的展现形式的差异化。在这些动态功能模板中,开发人员或者模板制作人员可以引用栏目链接,可以引 用文章、图片、视频等内容类型中的内容及其列表,也可以引用区块和页面部件。动态功能引用静态内容时,不管静态内容是否和动态功能是在同一台服务器,还是 被分发到了其他服务器,甚至是静态内容分离部署和集群部署,ZCMS都会自动为静态内容URL加上正确的前缀,保证在动态页面中点击静态内容链接时能够正 确跳转。

  静动态页面的无障碍互相引用使得整个站点的所有页面和功能能够统一制作、运行和维护,提高了网站的生产效率;又能够呈现给浏览者整齐划一的界面样式,使用户得到一致的浏览和使用体验。

3  内容的授权浏览

  为了减轻服务器的负载,减少对数据库服务器的查询请求,ZCMS和大部分的大型网站都将内容进行了静态化,内容只有在发布时才查询数据库生成静态文 件,浏览者访问的都是生成好了的静态文件,不需要再查询数据库。但静态文件不能够区分当前浏览者的身份,更不能针对浏览者的身份显示不同的内容,导致一些 功能不能实现,例如收费阅读、会员阅读、分权限阅读等。

  为了解决这一问题,ZCMS提供了内容的授权浏览功能。系统管理员可以建立不同的浏览权限组,浏览权限组实际上是一组身份条件,包括角色、等级、积分 等。管理员可以在栏目的扩展配置中设置允许浏览的权限组,编辑人员可以为每条内容记录指定允许浏览的权限组,只有当前浏览者的身份满足浏览权限组设定的条 件,相应的栏目和内容才会显示。

  如果栏目设置了浏览权限,则该栏目及栏目下的内容不会生成静态页面,栏目及栏目下的内容都只能使用动态URL访问。该动态URL会首先检查当前浏览者 是否满足指定的身份条件,如果不满足则直接跳转到会员登录页面,如果满足则根据当前栏目的模板设置调用模板引擎输出相应的页面内容。

图:ZCMS中的浏览权限组

图:ZCMS中的浏览权限组