问题 #626💬 已回答提出于 2017年12月10日作者 z1lk0 个反应

在包装器周围放置不可编辑的 HTML

快速解答作者 z1lk

我调整了代码,做了一个适合我需求的小补丁。配置选项“surround”允许你指定一个ID,代表容器中的一个元素。这个DOM子树在主初始化时被提取,存储在编辑器配置中,并被画布拾取。Canvas 随后负责包裹周围的环绕渲染。我想知道是否有人有类似的需求,这是否是个好解决方案。 如果用例不清楚:假设我用的是Bootstrap,有一个带有容器、导航栏、页脚等的主题。然后我有一个页面模板,用 Grapes 编辑。我想在主题的HTML中看到模板,但我应该只能编辑模板,同样,'Editor.getHtml()'也应该只返回模板HTML。

阅读下方完整回答 ↓

问题

我的CMS是这样的:网站可以有一个主题,并在该主题下放置多个模板。主题渲染在每一页,模板仅渲染在特定页面。我已经成功地将 GrapesJS 与我现有的模板编辑器集成了,但我有个问题:有没有办法在 Grapes 中围绕模板渲染主题?也就是说,有没有办法在可编辑的 HTML 周围插入不可编辑的 HTML?如果我在画布的“正文”和“#wrapper”之间放置 HTML,我似乎得到我想要的结果。

有没有现有的 API 可以实现这个功能?如果没有,这个功能是否理想,还是我应该用 JavaScript 把我的主题 HTML 注入编辑器里?

附言:这里是第一次发帖。这款软件做得很棒@artf。我很期待看到Grapes如何帮助我,以及我如何为这个项目做出贡献。

回答(3)

z1lk2017年12月11日

我调整了代码,做了一个适合我需求的小补丁。配置选项“surround”允许你指定一个ID,代表容器中的一个元素。这个DOM子树在主初始化时被提取,存储在编辑器配置中,并被画布拾取。Canvas 随后负责包裹周围的环绕渲染。我想知道是否有人有类似的需求,这是否是个好解决方案。

如果用例不清楚:假设我用的是Bootstrap,有一个带有容器、导航栏、页脚等的主题。然后我有一个页面模板,用 Grapes 编辑。我想在主题的HTML中看到模板,但我应该只能编辑模板,同样,'Editor.getHtml()'也应该只返回模板HTML。

artf2017年12月13日

太好了@z1lk我觉得连这样也能奏效 “''js const canvas = 编辑器。画布; const surround = document.createElement('div'); surround.innerHTML = '<div>Some text</div>'; canvas.getBody().appendChild(环绕); surround.appendChild(canvas.getWrapperEl());

我结束这篇文章,因为你已经破案了
z1lk2017年12月13日

我用的方案和你类似,这样就不用对Grapes源头做更改。有时组件“工具”的位置不对,好像它们的垂直偏移是相对于身体计算的,而不是包裹器。不过我无法可靠地复现它。谢谢你的帮助@artf

编辑:我认为工具错位是因为“包围”从画布外移到了内侧。我现在已经没有这个问题了,但我可以通过选择一个组件来调出工具,然后打开浏览器的检查器(Firefox)来制造类似的问题。与#495类似

相关问答

通过相似的问题讨论继续研究。

问题 #493

我可以从块状API动态设置内容吗?

你好,@artf,非常棒的网页构建框架,继续保持 :+1: 代码: “JavaScript ... blockManager.add('dynamic-nav', { 标签:“动态导航”, 属性:{ 类别:“Fa fa-省略号-h”, 标题:“插入导航动态菜单” }, 分类:“...

3 个回答更新于 2019年9月18日

问题 #511

通过块管理器 API 更新内容后无法编辑

你好,抱歉@artf我之前的问题,我必须创建一个新问题,我的问题是这样的错误 编辑:抱歉,我刚刚修复了脚本上的问题: “JavaScript 动态导航 blockManager.add('dynamic-nav', { 标签:“动态导航”, 属性:{ 类别:“Fa fa-省略号...

3 个回答更新于 2019年9月18日

问题 #1888

在画布内添加自定义HTML

你好, 我用 Grapes 导出一个包含所有信息的自定义 json,而不是用 HTML 和 CSS。 为此,我解析存储在localStorage上的gpjs组件。 现在我需要自定义组件在Canvas中的渲染方式。 举个例子,我有一个输入组件,包含两个特征(标签和值),我想在画布...

3 个回答更新于 2020年4月2日

问题 #1836

如何在所有生成的API中添加!重要性

你好,@artf, 虽然我打算用 CSS 从 Editor 编辑一些 HTML,但我需要在所有 CSS 里添加“!important”,这会被更改。 让我举个例子, 这是之前的CSS 现在我要用“#000”来更改这个字体的颜色。 只有这个更改后的 CSS 需要附加 '!impo...

3 个回答更新于 2020年3月10日

与此问题匹配的付费插件

根据问题关键词和标签相关性精选,助你更快交付。

查看全部插件

正在加载付费插件推荐……

免费方案

在以下平台查看开源 GrapesJS 插件: GitHub 或在我们的免费目录中快速搜索。

浏览免费插件 →
高级方案

高级插件提供支持、定期更新和生产就绪的功能——为你节省数天的集成工作。

浏览高级插件 →

相关教程

关于同一主题的深入指南。

全部教程 →

浏览插件分类

直接跳转到市场上的插件分类页面。