Я сейчас пытаюсь заставить мои модули работать должным образом.Расширение модулей путем добавления полей прекрасно работает.Я использую несколько модулей (например, «тизер»), которые расширяют «контейнер», который определяет основные параметры, такие как размер.
Это мой контейнер, определяющий параметр «размер»:
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']
}
} }) }}
Isэто невозможно или я что-то не так понял?