自定义设置可以是 "passed into" Contentful UI 扩展任务吗?

Can custom settings be "passed into" a Contentful UI extension assignment?

是否可以将数据传递到 UI 扩展分配(意思是 UI 扩展 X 分配给字段 Y),以便针对不同情况稍微改变它们的功能,而不必重新实现整个扩展?

例如,CodeMirror 是一个非常简洁的嵌入式编辑器,但它有一堆 "modes," 取决于您使用的语言。如果我们甚至可以在将扩展分配给字段时传入一个字符串来表示所需的模式,那么就不需要做一个不同的扩展来使用不同的语法高亮显示。

有了这个,现在可以有一个通用的 "CodeMirror Editor" UI 扩展,然后只需配置一个运行时。

在极端的另一端,我们可以在将扩展分配给字段时指定整个 JSON 个对象,以进一步指定配置选项。

这将使 UI 扩展变得更加……有用。现在是否存在此功能,或者是否有某种方法可以合理地使其发挥作用?字段规范中是否有某个地方我可以 "park" 一个 JSON 字符串,然后从扩展内部访问它?

您可以做的只是从另一个字段读取此设置,无论是字符串还是 json object。

例如 slug generator 自动从标题字段生成其值。

你或许可以这样做:

const cfExt = window.contentfulExtension || window.contentfulWidget


cfExt.init(api => {
    var langField = api.entry.fields.mirrorLang || 'default'
    //Rest of implementation
})

好吧,我为此写了一些东西,针对我的情况,但可以推广到其他人。这是一个 UI 扩展从 space 中的另一个条目检索设置并使用它动态配置自身的示例。

https://github.com/deanebarker/contentful-code-editor

Contentful 为 UI 扩展推出了名为“配置参数”的东西,可用于解决此问题。

它们有两种类型的参数,installationinstance参数。安装参数是在安装 UI 扩展时设置的,实例参数是在配置内容类型上的字段以使用扩展时设置的。后者非常适合您的用例。

要使用此功能,您需要:

  1. extension.json 文件中为 UI 扩展名创建参数定义。例如。名为 "codeMirrorSettings" 的新实例参数,类型为 Symbol,名称为 "CodeMirror Settings".
  2. 在扩展中,使用extensionsApi.parameters.instance.codeMirrorSettings获取当前参数。

配置参数的文档可以在 Contentful 的文档中找到: