也许是我孤陋寡闻吧,我就没看到过 Rails 有像样的 CMS 管理系统,多数都还停留在教学示例的程度。特别是编辑器里面插入图片,以及图片文件管理,和 WordPress 简直没法比。
在谷歌上搜来搜去,找到一款接近 WordPress 的:Camaleon CMS,很有参考价值。
我们使用 AlchemyCMS,我认为是最灵活的 CMS,Alchemy 与其他 CMS 有理念上最根本的差别,CMS 通常是提供一个富文本编辑器了事,Alchemy 的做法是由开发人员提供 HTML 结构与 CSS,编辑人员只需要往里面填空即可。
我们使用 AlchmeyCMS 做电商的首页(楼层)及活动页面;只提供富文本编辑器的 CMS 也许只适合用来写 blog post
我要给客户实现一个在线销售系统中,有一些文章页面需要不定期的由客服人员去更新。后台需要一个类似 tinymce 之类的 web 编辑器能让业务人员去编辑页面,在这个编辑器上能插入图片,能调出过去已经上传的图片,能给图片加 caption 文字,在编辑器中能对一张图片重新编辑 img 的一些属性。另外图片等多媒体有个管理页面,上传图片时能选择或者创建新目录,也能删除已经上传的图片。还有图片上传应该能支持又拍云或者 cloudinary 之类的云存储。
这些普通的编辑器功能是在要求不过分,在 php 系统中也是很常见的,但是很少能见到有 rails 系统中对这些功能很好的实现。这里面其实涉及到很多 jquery file upload 等前端的东西,并不是用几条 rails 命令就能搞出来的。
我不相信 rails 网站里面不需要图文编辑器功能,我去找一些 rails 版的 CMS,主要其实是想找一个实现的比较好的图文编辑实现方案,当目前为止除了 Camaleon CMS,其它都太过于简单了
就拿现在回复帖子用的 markdown 编辑器来说,我也觉得 markdown 挺好用的,但是这样的编辑器是无法提供给普通客服人员用做文章编辑器的。
我感觉 rails 如果只是去追求极简,不屑于一些常见功能的话,最终只会是越来越小众,或者只适合做一个产品原型。
rails 随便搭确实可以很快出来,但那是给自己用的。要给用户一个好用的 cms 还是得花不少时间的。我也是至今没有找到一个像样的 rails cms,没有任何一个 rails cms 能给我 wordpress 的使用体验。感觉楼主这个是我需要的。我试试改成中文版。
#7 楼 @flowerwrong 这个 Camaleon 确实很接近 WP 的感觉了,后台是用了 AdminLTE 模板,很熟悉。
不过这套代码里面用了很多 rails engine, plugin 的用法,还有就是作者自己用 FileUtils 写了个 uploader。我是 rails 新手,习惯于看常见的 gem 调用,看别人 DIY 的代码很累。
但是作者写的几个处理图片管理的前端 coffeescript 脚本,感觉很有参考价值。我准备自己拿 carrierwave,ancestry 来山寨一个图片管理器。
#10 楼 @samport 点击上传后如何做,这个很容易的....就是开 debugger 或者读他们提供的 php、c#、java 等等语言的参考实现了解前后端的协议就行了,比如我几年前做过的示例....
虽然 tinymce、ckeditor 等都提供了部分语言的后端实现,但参考代码就是参考代码,最后还是要根据自己的项目定制的
另外,WP 是应用,Rails 是框架...库层面没法做到你想要的那种层面的开箱方案的,后端持久化如何做的、文件管理、权限模型(以及你用什么访问控制的 gem 还是自己搞的...)...可能的组合太多,但是 WP、Drupal 层面这些已经抽象成接口甚至协议就很容易了,并且甚至能整理出开发文档
rails 方面也有打包方案类似 ckeditor ,你看 readme 里为了支持市面上的上传组件就搞了多少套适配,但这个太简单,还没涉及访问控制、文件组织等等业务,把这些加上,那适配真就是排列组合了...
PS,很多开箱即用 Gem(比如 Devise、Doorkeeper)也可以深度定制的,修改一些内置的逻辑、扩展新功能,定制需要基于 ruby 和 rails 的理解找到 hack 点(最简单的定制比如上文提到的 ckeditor 的 gem,不爽他上传文件的那个界面,如何用自己的替换),太细碎,整理成文档太难
其实很多 Rails 做的 CMS 都实现了题主说的功能;题主认为缺少的功能,其实是属于富文本编辑器的功能范畴,即 RTE File Manager。之前我们为了做电商的商品详情页让运营编辑,对这方面研究了很多。
TinyMCE 有 enterprise 版本,比社区版本多了 File Manager。开源的 File Manager 也有几个,比较不错的有:
题主可以自己尝试集成,不过相应的 upload backend 还是要自己实现,特别是跟七牛等云服务的结合。
题主要是有心,我们可以一起基于现有的这几个 File Manager 扩展一下,实现这些功能:
另外我赞同 @jasl 说的“WP 是应用,Rails 是框架”,甚至我一楼回复的 AlchemyCMS 也只是 CMS 框架。对自己的定位不同,看待 File Manager 的态度就不同。框架可以不屑做这些,但是如果是做 CMS 应用没有这些就说不过去了。
#13 楼 @holysoros 感谢分享经验。这个很棒:Responsive FileManager。
我开始参考别人的前端代码,写一个自己的 media 管理器加后端的支持目录结构的 uploader。
这个在 php 项目中,可以随手找到一个前后端全套的组件直接拿过来用,没想到在 rails 项目中还得自己去研究前后端的代码。
希望能将来有一个符合多数普通编辑人员习惯的编辑器加媒体管理器,可以直接拿过来集成到 rails 项目里。
非常能理解楼主需求,一套可重用的 CMS 框架,可以满足很多无需太多定制要求的项目,极大减少开发量,例如:
CKEditor 的 file manager 已经做得很好了。什么权限管理,上传到 CDN 简单配置一下就可以用的了。我们就是 CKEditor 然后结合 cancan 做权限管理然后直接存 CDN。