1.所有的资源,包括图片、HTML 文件、JSP 文件、XML 内容、文本内容、element、CSS、Javascript 等等,都放在数据库中,在数据库中维护一个虚拟的树形目录结构,这样所有的资源都有新建、修改、删除、移动、复制等操作----好的设计。
2.页面布局、修改、上传、内容发布等等,都在 offline 项目中进行,开发、测试、预览都在offline 项目中。当全部测试完成,使用一个按钮 publish 就可以将所有的修改内容一次性转移到 online 项目中。外部 Web 访问者只能看到 online 项目内容,publish 可以每次处理单个资源,也可一次处理多个资源。这样开发调试可以直接在正式的服务器上面进行,而不影响外部 Web 访问----好的设计。
3.版面布局 template 可以通过内置的 templateone 从几个页面上修改一些参数进行,也可以通过新建一个 jsp 文件进行。
内置的 templateone 最多可以将页面分成 4*2 表格,每个表格单元格可以自行定义,并且可以在此基础上在上下左右各加一个模块;JSP 可以调用 OpenCms 的 jsp taglib 进行----不好的设计。
Templateone 可以满足大多数需求,但是不是所有。JSP template 需要二次开发,需要开发者懂 HTML 美工、Java、JSP、JSP taglib,这样的限制,导致懂的人必然少,另外上手时间也长,毕竟 OpenCms 的 jsp taglib 也不是一两天就能精通的。
4. 使用 JSP template 的时候,如果想将某个目录的 template 属性指定为某个版本布局的 template,有时候目录里面的文件没有用上布局的 template,似乎有 bug。
5. 可以使用 export 将动态页面生成静态页面,不错。动态页面可以设置多种级别的缓冲,极大地提高性能,不错。
6. 除了内容发布、版面定制、直接在 Web 上排版、内置了Apache Lucene 搜索引擎、数据可以从 Web 上进行备份、用户权限管理、模块管理等常见的内容管理软件都有的功能之外,只增加了 task 定时提醒,资源的版本管理,链接的错误检查,广告信息发布,内容发布的多语言支持等几个功能。其他 CMS 的一些额外功能,比如 PHPNuke 的投票,调查,访问统计,论坛,广告管理,每个用户自定义网页风格等等,OpenCms 都没有提供。真是一个纯粹的 CMS。凭借这个 OpenCms 来架设网站,似乎不够好。
7. 只使用了最基本的 J2EE 技术,比如 JSP, servlet, JDBC,没有使用其他乱七八糟的技术,这样的代码看懂的人更多----好的设计。
8. 使用继承的方法,通过 JSP taglib 来实现模仿 Windows 的 Web dialog,是很好的创新思路,代码也很简洁,但是使用 taglib 对于系统的排版改动,似乎不好 ---- 这也是很多人反对使用 taglib 的原因,taglib 实际上将 HTML 写在 Java 类中,不好进行排版。使用继承的方法来设计 GUI,以前只见过 Power Builder 推荐这样做,其他语言都不怎么推荐这样做,很另类----不好的设计。
9. 使用 Javascript 开发出类似 Windows 的文件管理器界面来进行资源管理,包括资源类型、大小、最后修改日期等等,让人佩服。Javascript 水平真高----好的设计。
10.其他 CMS,包括 PHPNuke 都可以对页面进行简单的划分区块,并且可以通过 Web 界面进行简单的操作,将某个区块做上下左右调整,OpenCms 这方面的功能不好----差的设计。