新手问题 怎样做到所见即所得的编辑?

chairy11 · 2014年12月19日 · 最后由 dddd1919 回复于 2014年12月23日 · 2949 次阅读

看一些 CMS,很多有所见即所得功能的,在页面上一点,就可以直接编辑。 他们是怎么做到的呢? 有些看似静态的页面,但又想可以修改,比如“关于我们”页面,上面的公司介绍啊,电话啊,地址啊,都是只使用一次,如果为它设置个 model,太浪费了。但怎么做呢?这些可以修改的元素放在哪里呢?设置一个 yml,放置这些变量? 大家都是怎么做的呢?

contenteditable 之前论坛里有人写过类似的插件。

一般不会让你用 yaml 的,即使这些东西十年不变经理也会要求做成随时修改不用重启的。如果有成熟的 cms 方案,可以直接写 html 代码然后做 cache,否则还是做一个 site_settings 表吧

#1 楼 @saiga 是要求随时修改,所以才求教的呢……你意思是所有这些变量都在 site_setting 里?比如电话号码什么的。问题是,site_setting 到底是怎样的表?我没明白…… 现在的 CMS 我看了看,比较复杂也比较难修改,所以我还是自己手写比较简单些,也漂亮些。比如我看有些 cms 用一个 page 模型,然后有 title,body,让人编辑,就生成整个页面。但往往这样弄出来的页面不太好看……

#1 楼 @saiga 查了查,说 contenteditable 是一个 html5 的属性?我好好研究下……

http://catlog.info/2014/08/22/comfortable-mexican-sofa-quick-start/

我个人比较推荐这个 cms 插件,非常灵活,开发也活跃

#4 楼 @saiga 好的,我看看,谢谢:)

记得这个项目好像就是: https://github.com/sofish/pen


原来楼主是后端怎么存储没搞明白。这太简单了,随便你怎么存呗,将整个页面的 HTML 存下来

#6 楼 @jex 没明白耶,怎么将整个页面 html 可编辑可保存?因为我平时理解的,都是动态的东西都放在数据库里,然后我具体页面就把这些数据取出来,放在.html.erb 的特定位置<%= %>。保存这些数据时,都是用表单提交,然后存进数据库的……

#7 楼 @chairy11 。。。。。。。。。思维固化成这样?

提交数据就一定得用表单么?

<div contentEditable="true" id="page_content">
<%= page_content %>
</div>
<script>
//每隔三秒就自动保存修改
setInterval(function () {
   $.post({
        content:$('#page_content').html(),
        url:'/save-page-content/'
  });
},3000);

</script>

所见所得编辑器,就像 Medium 那样的,估计也有接口暴露服务器可存储的 JSON 数据. http://michelson.github.io/Dante/ 存储 HTML 是简单粗暴的做法,不考虑安全性之类的也许无所谓一下

画面保存时,把数据保存到 json 里,画面重新 reload 时从 json 读数据就可以了

#8 楼 @jex 我是有点傻……还是没想明白……平时用表单的话,我要验证用户,根据用户决定给不给他编辑的权限。如果是纯用 js 的话,是不是每个人都能改了?权限验证放在哪里呢?

#11 楼 @chairy11 rbac 可以给每个模块设权限

關鍵字:in-place edit

编辑完一保存就直接生成静态文件

需要 登录 后方可回复, 如果你还没有账号请 注册新账号