Apostrophe CMS:根据页面设置添加字段

时间:2018-01-03 04:30:12

标签: apostrophe-cms

有没有办法根据当前页面设置为某个片段添加某些字段?例如,如果我有一个有4个输入字段的表单,是否有办法添加额外的第5个字段或根据当前页面设置覆盖4个输入字段的值?

1 个答案:

答案 0 :(得分:-2)

we'll write the code for our module in  
  

LIB /模块/链路窗口小部件/ index.js

module.exports = {
  extend: 'apostrophe-widgets',
  label: 'Link to Anywhere',
  addFields: [
    {
      name: 'url',
      type: 'url',
      label: 'URL',
      required: true
    },
    {
      name: 'label',
      type: 'string',
      label: 'Label',
      required: true
    }
  ]
};

安排字段

当我们为部件和小部件创建越来越复杂的模式时,我们将希望以支持编辑器逻辑工作流的方式安排模式中的字段。

我们可以使用arrangeFields将模式分解为编辑器模式中的多个选项卡。这可以通过将一个对象数组传递给arrangeFields来实现,每个对象包含一个名称,标签和字段数组

arrangeFields: [
    {
      name: 'contact',
      label: 'Contact',
      fields: [ 'firstName', 'lastName', 'phone' ]
    },
    {
      name: 'admin',
      label: 'Administrative',
      fields: [ 'slug', 'published', 'tags' ]
    },
    {
      name: 'content',
      label: 'Biographical',
      fields: [ 'thumbnail', 'body' ]
    }
  ],

向所有作品添加字段

正如教程中所解释的那样,撇号模块是创建遍布整个网站的可重用内容的好方法 - 包括撇号 - 页面和撇号 - 小部件。

我们已经了解了在配置每个模块时如何使用addFields选项为这些字段添加字段。但有时我们想为每种类型的作品添加一个字段。我们可以通过配置撇号模块本身来实现。

我们为撇号创建的任何配置都成为扩展它的所有模块的配置的一部分。

我们的第一个想法可能是在app.js

中执行此操作

/

/ lib/modules/apostrophe-pieces/index.js in your project

module.exports = {

  beforeConstruct: function(self, options) {
    options.addFields = [
      {
        type: 'string',
        name: 'author',
        label: 'Author'
      }
    ].concat(options.addFields || [])
  }
}