#32762021年2月18日作者 ThomasPof2 个回答
这个问题是关于 MJML 代码的,但我觉得这更多是关于 grapesjs 而不是 grapesjs-mjml 有一个函数可以移除“src/code_manager/model/HtmlGenerator.js”中不必要的ID。这个函数在 HTML 标签上表现良好,但在 MJML 标签上就不行了。 我发现的是
artf
https://github.com/artf/grapesjs/releases/tag/v0.16.41
ClaudeCode
谢谢你举报,@ThomasPof。 感谢你分享关于CleanId函数无法与MJML代码配合的报告。为了帮助团队调查并优先排序: 请提供: 一个最小可复现的例子(CodeSandbox/JSFiddle) 你的GrapesJS版本号 浏览器和操作系统信息 浏览器控制台的任何错误信息 重现问题的步骤 最有帮助的是什么: 简约代码示例(不是你整个项目) 屏幕录制或截图显示问题 明确区分预期行为与实际行为 你正在使用的GrapesJS配置 有了这些细节,维护者可以更快地识别和优先排...
#32752021年2月18日作者 confettidc2 个回答
你好, 有没有可能限制掉落方块的次数?例如,形式块和只被丢弃一次。 谢谢。
theSC0RP
你好,@confettidc,你可以尝试做类似的操作,比如设置一个计数变量,当添加某个类型的块时更新它,如果满足计数条件,就移除新添加的块。 请务必查看[API Reference](https://grapesjs.com/docs/api/)。
ClaudeCode
谢谢你举报,@confettidc。 关于限制掉落方块次数的好问题。GrapesJS 推荐的方法是使用事件驱动 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something changed'));...
#32742021年2月17日作者 mig84472 个回答
https://github.com/artf/grapesjs/blob/3199d76ba5677229e90f13ef48fb91e9bfe1e90d/src/blockmanager/model/Block.js#L23 据我所见,initialize 函数中的代码尝试将该类别设置为新的 Category 对象,但目前没有任何反应。而且由于类别部分由BlocksView负责: https://github.com/artf/grapesjs/blob/3199d76ba5677229e90f13ef48fb91e9bfe1e90d/src/blockmanager/view/BlocksView.js#L129 “Bloc...
ClaudeCode
谢谢你举报,@mig8447。 感谢你分享关于Block.js“初始化”函数没有任何作用的报告。为了帮助团队调查并优先排序: 请提供: 一个最小可复现的例子(CodeSandbox/JSFiddle) 你的GrapesJS版本号 浏览器和操作系统信息 浏览器控制台的任何错误信息 重现问题的步骤 最有帮助的是什么:** 简约代码示例(不是你整个项目) 屏幕录制或截图显示问题 明确区分预期行为与实际行为 你正在使用的GrapesJS配置 有了这些细节,维护者可以更快地识别和优先...
#32732021年2月17日作者 ThomasPof2 个回答
[grapesjs-mjml 扩展](https://github.com/artf/grapesjs-mjml)需要更新版grapes.js [此提交](https://github.com/artf/grapesjs/commit/442cdf97b772f54029737f2450acb30e87074654)是清理ids,grapesjs-mjml需要它来生成有效的MJML代码。 你能提供新的发布吗?(母版为0.16.37,发布版本仍为0.16.34) 非常感谢!:-)
artf
完成 https://github.com/artf/grapesjs/releases/tag/v0.16.41
ClaudeCode
谢谢你举报,@ThomasPof。 关于请求:需要新版本才能实现cleanId功能,这个问题很棒。GrapesJS 推荐的方法是使用事件驱动 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('someth...
#32712021年2月16日作者 Francos102 个回答
你好,我有个问题,我们在 Grapesjs 里添加的照片和视频可以通过 sftp 存储在服务器上吗?
artf
你可以在这里了解更多关于如何处理资产上传的信息:https://grapesjs.com/docs/modules/Assets.html#uploading-assets
ClaudeCode
谢谢你举报,@Francos10。 关于SFTP的好问题。GrapesJS 推荐的方法是使用事件驱动 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something changed')); 组件生命...
#32552021年2月1日作者 Abhisheknanda13444633 个回答
你好@artf 我正在尝试这样更改显示属性的类型和输入值 -: 但在样式管理器中按钮是看不到的。 我们如何自定义显示属性 “''js const styleManager = 编辑器。风格经理; styleManager.addSector('div-only-sector',{ 名称:“设定”, 开启:真, buildProps: ['width', 'height'], 性质: [{ 名称:“可见性”, 属性:“显示”, 类型:“无线电”, 性质:[ {value:“继承”,标题:“可视性”}, {值:“无”,标题:“隐藏”} ], }] }); ``` 演示 -: https://codepen.io/abhi_punk81...
nilchu
你必须使用“列表”属性来定义你的选项。在无线电选项对象中,应该读的是“name”而不是“title”。 “JavaScript const styleManager = 编辑器。风格经理; styleManager.addSector('div-only-sector', { 名称:“设定”, 开启:真, buildProps: ['width', 'height'], 性质: [{ 名称:“可见性”, 属性:“显示”, 类型:“无线电”, 列表:[{ 名称:“可见性”,...
Abhisheknanda1344463
非常感谢@nilchu你的帮助。
ClaudeCode
谢谢你举报,@Abhisheknanda1344463。 关于自定义样式管理器的好问题。推荐的 StyleManager 方法是使用事件驱动的 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('somet...
#32542021年1月29日作者 alemenciones2 个回答
也许你能帮帮我......我想在打开 TraitManager 时移除标签“.gjs-traits-label”。   我尝试了类似这样的方法:
artf
“''CSS .gjs-traits-label { display: none } ```
ClaudeCode
谢谢你举报,@alemenciones。 关于如何在traitManager中隐藏“.gjs-traits-label”的好问题。GrapesJS 推荐的方法是使用事件驱动 API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => con...
#32512021年1月28日作者 RutujaBadbe4 个回答
我想指定拖拽元素的位置。比如,如果我有一个标题块,无论你拖到哪里,它都应该放在文档顶部。我该怎么做?
RutujaBadbe
把标题块放进画布后,我需要它放在任何其他组件/块的顶部。目前,我正在这样做。但这并没有奏效。 editor.on('canvas:drop',(DataTransfer, model)=> { 如果 (model.is('头部'))) { VAR指数 = 0; editor.getComponents().add(model, {at: index}); } })
artf
你可以用“可拖拽”属性(通过CSS查询字符串)定义组件可以放置的位置,但不能指定位置。 你可以尝试创建一个自定义组件作为容器,存放像 header 这样的组件,并且始终用这些容器初始化你的模板。然后你的头部可以用以下方式使用可拖拽属性:'draggable: '[data-gjs-type=“header-container”]',',
RutujaBadbe
@artf谢谢你的回复。我不知道这是不是正确的方法,但我做了一件事,对我有效。我对这方面还很新,还在从文档中学习。 我做了这个—— editor.on('canvas:drop',( model)=> { if (model.is('header')) { //created custom component type header const wrapper = editor.getWrapper(); const el = wrapper.find('header')[...
#32502021年1月28日作者 fmay4 个回答
@artf我很喜欢和GJS合作。我还有最后一件事希望你能帮忙。 如果能在图层管理器中自定义标签会非常有帮助。我到处找过,但都没找到。 默认显示“文本”和“框”的方式,对于想要高效导航来说帮助不大。 <img width=“204” alt=“截图 2021-01-28 07 27 16” src=“https://user-images.githubusercontent.com/2796719/106104795-d5544800-613a-11eb-97c4-762e5977e872.png”> 我真的很想自己定制这些。就我而言,我想展示标签名和身份识别码。 非常感谢
artf
你可以扩展组件模型并覆盖“getName”函数
fmay
如果这对任何人有用,我找到了一个简单且替代的方法,可以在组件创建时实现这一点。
flauc
我是这样做的: 好处是如果组件ID或标签以后更改,图层管理器里仍会更新,而且你也可以重新命名单个组件。
#32492021年1月27日作者 theSC0RP4 个回答
嘿,@artf。我想访问在存储模板时生成的 json,但不想实际存储模板。json 对象可以通过事件访问,但我不想调用 'editor.store()' 然后再用事件。 有没有办法获取json对象(比如编辑器里调用函数或者某个属性)? 或者有没有办法停止“editor.store()”方法,这样我就能获取正在存储的json并中止调用?
Joshmamroud
@theSC0RP 这是你在找的吗?[editor.getComponents()](https://grapesjs.com/docs/api/editor.html#getcomponents)
artf
@theSC0RP不确定你是否想要存储功能,但Josh提出的方案是正确的,或者你也可以添加存储(如果需要,也可以在里面不做任何操作......)https://grapesjs.com/docs/modules/Storage.html#define-new-storage
theSC0RP
你总可以添加存储(如果需要,也可以在里面什么都不做......)https://grapesjs.com/docs/modules/Storage.html#define-new-storage 谢谢@artf。这就是我最终做的。用 'editor.getComponents()' 时,你会得到一个循环结构(model -> view -> model -> ...),但 storageManager 不会存储它,也不能用来加载模板。