删除撇号-cms 模块中的字段作为选项参数



我目前正在尝试让我的模块正常工作。通过添加字段来扩展模块效果很好。我使用几个模块(例如"预告片"(来扩展定义大小等基本选项的"容器"。

这是我的容器,定义了一个"大小"选项:

module.exports = {
extend: 'apostrophe-widgets',
label: 'Container',
contextualOnly: true,
addFields: [{
name: 'contentBlock',
type: 'area',
label: 'Content Block',
}],
beforeConstruct: function(self, options) {
options.addFields = [{
name: 'size',
label: 'Modulbreite',
type: 'select',
choices: [{
label: 'Content width',
value: 'content-width'
},
{
label: 'Full width',
value: 'full-width'
}
],
required: true
}].concat(options.addFields || []);
}
};

这是我的预告片,扩展容器:

module.exports = {
extend: 'container-widgets',
label: 'Teaser',
contextualOnly: false,
addFields: [
{
name: 'teasertext',
label: 'Text',
type: 'string',
textarea: true
},
{
name: 'teaserurl',
label: 'Link',
type: 'string',
required: true
},
{
name: 'image',
label: 'Teaser Image',
type: 'singleton',
widgetType: 'apostrophe-images',
options: {
limit: 1
},
required: true
}
]
};

然后我在页面标记中包含容器:

{{ apos.area(data.page, 'body', { widgets: { 'container': {} } }) }}

以及容器标记中的预告片:

{{ apos.area(data.widget, 'contentBlock', { widgets: { 'teaser': {} } }) }}

问题是在某些情况下,我不想为用户提供"大小"选项,因为预告片可以嵌套在已经定义大小的其他模块中。因此,我想传递一个删除"size"选项的参数。这并不像我想象的那样有效,但我不知道这是否可能像这样。

在这种情况下,我试图包含这样的预告片:

{{ apos.area(data.widget, 'contentBlock', { widgets: {
'teaser': {
removeFields: ['size']
}
} }) }}

这是不可能的还是我弄错了什么?

您不能在传递给apos.area的选项中使用removeFields,因为对于该类型的所有小部件,小部件的架构是在启动时确定的。

但是,您可以extendteaser-widgets模块以创建一个使用removeFields删除size字段的simple-teaser-widgets模块。然后,您可以将所需的小部件类型放在每个区域中,而忽略其他区域。

simple-teaser-widgetsindex.js确实非常简单:

module.exports = {
extend: 'teaser-widgets',
label: 'Simple Teaser'
};

最新更新