开源项目 Camaleon CMS, 一个接近 WordPress 的 Rails 版 CMS

samport · November 06, 2016 · Last by Peter replied at February 08, 2017 · 4208 hits

也许是我孤陋寡闻吧,我就没看到过 Rails 有像样的 CMS 管理系统,多数都还停留在教学示例的程度。特别是编辑器里面插入图片,以及图片文件管理,和 WordPress 简直没法比。

在谷歌上搜来搜去,找到一款接近 WordPress 的:Camaleon CMS,很有参考价值。

  • 亮点:编辑器图片上传功能,图片管理功能,分类和标签功能,基本的 SEO 功能,插件机制,前台可以更换模板,多语言,内置评论功能,联系表单功能。
  • 不足:用户登陆及文件上传功能好像是自己造的轮子,没有使用 devise 及 carrierwave,代码不太容易懂。

Camaleon CMS 官网

Camaleon CMS Demo

Camaleon CMS GitHub

Camaleon CMS图片管理

我们使用 AlchemyCMS,我认为是最灵活的 CMS,Alchemy 与其他 CMS 有理念上最根本的差别,CMS 通常是提供一个富文本编辑器了事,Alchemy 的做法是由开发人员提供 HTML 结构与 CSS,编辑人员只需要往里面填空即可。

我们使用 AlchmeyCMS 做电商的首页(楼层)及活动页面;只提供富文本编辑器的 CMS 也许只适合用来写 blog post 😅

Ruby on Rails 适合快速原型开发。非常适合,以至于从 rails new ... 开始的敏捷开发,胜过基于框架的二次开发。

rails 要干什么 刷刷就造出来了 不用 cms

一般装个 wp 来用的 装 rails 环境就够一壶了。

我要给客户实现一个在线销售系统中,有一些文章页面需要不定期的由客服人员去更新。后台需要一个类似 tinymce 之类的 web 编辑器能让业务人员去编辑页面,在这个编辑器上能插入图片,能调出过去已经上传的图片,能给图片加 caption 文字,在编辑器中能对一张图片重新编辑 img 的一些属性。另外图片等多媒体有个管理页面,上传图片时能选择或者创建新目录,也能删除已经上传的图片。还有图片上传应该能支持又拍云或者 cloudinary 之类的云存储。

这些普通的编辑器功能是在要求不过分,在 php 系统中也是很常见的,但是很少能见到有 rails 系统中对这些功能很好的实现。这里面其实涉及到很多 jquery file upload 等前端的东西,并不是用几条 rails 命令就能搞出来的。

我不相信 rails 网站里面不需要图文编辑器功能,我去找一些 rails 版的 CMS,主要其实是想找一个实现的比较好的图文编辑实现方案,当目前为止除了 Camaleon CMS,其它都太过于简单了

就拿现在回复帖子用的 markdown 编辑器来说,我也觉得 markdown 挺好用的,但是这样的编辑器是无法提供给普通客服人员用做文章编辑器的。

我感觉 rails 如果只是去追求极简,不屑于一些常见功能的话,最终只会是越来越小众,或者只适合做一个产品原型。

#4 楼 @samport 没看出来你说的那些和 rails 什么关系。功能是自己做出来的。

#5 楼 @huobazi 我本来是想找一个现成的轮子,看来连这样的基本功能也得自己造?😁

rails 随便搭确实可以很快出来,但那是给自己用的。要给用户一个好用的 cms 还是得花不少时间的。我也是至今没有找到一个像样的 rails cms,没有任何一个 rails cms 能给我 wordpress 的使用体验。感觉楼主这个是我需要的。我试试改成中文版。

#6 楼 @samport tinymce ckeditor ueeditor 等等 哪个不能在 rails 用?

不过你说的好像是一个现象,我印象中 php 开发者喜欢造 cms 程序,喜欢造 blog 程序,喜欢造论坛程序……

#7 楼 @flowerwrong 这个 Camaleon 确实很接近 WP 的感觉了,后台是用了 AdminLTE 模板,很熟悉。

不过这套代码里面用了很多 rails engine, plugin 的用法,还有就是作者自己用 FileUtils 写了个 uploader。我是 rails 新手,习惯于看常见的 gem 调用,看别人 DIY 的代码很累。

但是作者写的几个处理图片管理的前端 coffeescript 脚本,感觉很有参考价值。我准备自己拿 carrierwave,ancestry 来山寨一个图片管理器。

#8 楼 @huobazi 不是 tinymce 不能在 rails 用,而是 tinymce 上点击插入图片的按钮以后,怎么处理的问题。你可以随便找个 rails 的 cms 系统,点击插入图片按钮,看看它是怎么处理的,然后你再看看 WordPress 是怎么处理。

其它的 CMS 功能就更不用和 WP 去比较了,只能说 Rails 不屑于做 CMS。

#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,不爽他上传文件的那个界面,如何用自己的替换),太细碎,整理成文档太难

Camaleon 多语言支持的很好,以前也选过它

其实很多 Rails 做的 CMS 都实现了题主说的功能;题主认为缺少的功能,其实是属于富文本编辑器的功能范畴,即 RTE File Manager。之前我们为了做电商的商品详情页让运营编辑,对这方面研究了很多。

TinyMCE 有 enterprise 版本,比社区版本多了 File Manager。开源的 File Manager 也有几个,比较不错的有:

  • simogeo/Filemanager
  • elFinder
  • Responsive FileManager

题主可以自己尝试集成,不过相应的 upload backend 还是要自己实现,特别是跟七牛等云服务的结合。

题主要是有心,我们可以一起基于现有的这几个 File Manager 扩展一下,实现这些功能:

  • 文件夹形式管理上传的资源;
  • 结合常用云存储服务;

另外我赞同 @jasl 说的“WP 是应用,Rails 是框架”,甚至我一楼回复的 AlchemyCMS 也只是 CMS 框架。对自己的定位不同,看待 File Manager 的态度就不同。框架可以不屑做这些,但是如果是做 CMS 应用没有这些就说不过去了。

#13 楼 @holysoros 感谢分享经验。这个很棒:Responsive FileManager。

我开始参考别人的前端代码,写一个自己的 media 管理器加后端的支持目录结构的 uploader。

这个在 php 项目中,可以随手找到一个前后端全套的组件直接拿过来用,没想到在 rails 项目中还得自己去研究前后端的代码。

希望能将来有一个符合多数普通编辑人员习惯的编辑器加媒体管理器,可以直接拿过来集成到 rails 项目里。

#15 楼 @samport 因为这件事情实在是繁琐,而不是难。你写了 TinyMCE 的 File manager 加相应后端,那用 CKEditor 的没法用;有的又想浏览器直传到七牛等云存储;所以这件事情还真的只有自己才能做,即使有人做好了发布出来,适用场景其实很窄。

非常能理解楼主需求,一套可重用的 CMS 框架,可以满足很多无需太多定制要求的项目,极大减少开发量,例如:

  • refinerycms,可满足 只需要简单页面内容定制的,例如建站类型的
  • activeadmin-cms,适合原型级别、不管后端、验证概念级别的项目
  • rails-admin,可满足不太 care 管理后台,前台有定制需要的项目

#13 楼 @holysoros 我们电商运营和我说,请让我直接写 html 可以么?我表示压力好大。。。

#18 楼 @ericguo 曾经我们运营和我说请允许他使用 DreamWave,被我断然拒绝了😎 现在我们运营已经爱上我们这套 CMS 了,玩的飞起。

CKEditor 的 file manager 已经做得很好了。什么权限管理,上传到 CDN 简单配置一下就可以用的了。我们就是 CKEditor 然后结合 cancan 做权限管理然后直接存 CDN。

看着不错,有中文版支持没?

22 Floor has deleted

#15 楼 @samport 不知道有没有开发媒体管理器,有什么经验或代码分享吗?谢谢

You need to Sign in before reply, if you don't have an account, please Sign up first.