可以将自定义设置传入"内容UI扩展分配?

时间:2016-10-25 17:45:51

标签: contentful

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

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

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

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

这会使UI扩展更加有用。这个功能现在是否存在,或者是否有某种方法可以合理地使其工作?现场规范中是否有一些地方我可以"停车"一个JSON字符串,然后从扩展名内部访问它?

3 个答案:

答案 0 :(得分:1)

你可以做的只是从另一个字段读取此设置,是字符串或json对象。

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

你也许可以这样做:

const cfExt = window.contentfulExtension || window.contentfulWidget


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

答案 1 :(得分:1)

好吧,我为此写了一些内容,具体针对我的情况,但可以推广到其他人。如果UI扩展从空间中的另一个条目检索设置,并使用它来动态配置自身,则这是一个示例。

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

答案 2 :(得分:1)

Contentful推出了名为" 配置参数"用于可用于解决此问题的UI扩展。

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

要使用此功能,您需要:

  1. extension.json文件中为UI扩展创建参数定义。例如。一个名为" codeMirrorSettings"的新实例参数;类型为Symbol的#" CodeMirror设置"。
  2. 在扩展程序中,使用extensionsApi.parameters.instance.codeMirrorSettings
  3. 获取当前参数

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