扩展数组模态编辑器
Extend array modal editor
是否可以在不覆盖 array-modal.js (apostrophe-schemas/public/js) 的情况下扩展数组模式对话框?
我正在尝试在全局模块中创建一个 link 数组,为此我创建了:
...
name: 'links',
label: 'Links',
type: 'array',
titleField: 'title',
schema: [{
name: 'title',
label: 'Title',
type: 'string'
}, {
name: 'url',
label: 'Url',
type: 'url'
}, {
name: '_page',
label: 'Page',
type: 'joinByOne',
withType: 'apostrophe-page',
idField: 'pageId',
filter: {
projection: {
title: 1,
slug: 1
}
}
}]
...
现在我想设置标题字段并禁用 url 字段(如果页面是
选择。或者使用标题和 url 字段。
如果我注册这样的脚本:
apos.define('apostrophe-array-editor-modal', {
extend: 'apostrophe-modal',
source: 'arrayEditor',
...
});
我覆盖了原来的 array-modal.js,但我只想注册一个更改处理程序并在保存前检查输入。
我的目标是管理员可以在全局部分编辑的 (footer/static) link 列表,我可以在多个页面中使用它们。
谢谢!
我的建议是为每个 link 创建某种类型的 type
字段,其中编辑器在内部页面连接和外部页面连接之间做出选择 URL.
select
模式字段有一个 showFields
参数,可以 hide/show 部分模式形式基于所做的选择,请在此处查看文档 http://apostrophecms.org/docs/tutorials/getting-started/schema-guide.html#code-select-code
你的代码看起来像
name: 'links',
label: 'Links',
type: 'array',
titleField: 'title',
schema: [{
name: 'title',
label: 'Title',
type: 'string'
}, {
name: 'linkType',
type: 'select',
label: 'Type',
choices: [{
label: 'External',
value: 'external',
showFields: ['url']
}, {
label: 'Internal',
value: 'internal',
showFields: ['_page']
}]
}, {
name: 'url',
label: 'Url',
type: 'url'
}, {
name: '_page',
label: 'Page',
type: 'joinByOne',
withType: 'apostrophe-page',
idField: 'pageId',
filter: {
projection: {
title: 1,
slug: 1
}
}
}]
在您的模板中,您始终可以检查 linkType
的值来做出标记决定。
是否可以在不覆盖 array-modal.js (apostrophe-schemas/public/js) 的情况下扩展数组模式对话框?
我正在尝试在全局模块中创建一个 link 数组,为此我创建了:
...
name: 'links',
label: 'Links',
type: 'array',
titleField: 'title',
schema: [{
name: 'title',
label: 'Title',
type: 'string'
}, {
name: 'url',
label: 'Url',
type: 'url'
}, {
name: '_page',
label: 'Page',
type: 'joinByOne',
withType: 'apostrophe-page',
idField: 'pageId',
filter: {
projection: {
title: 1,
slug: 1
}
}
}]
...
现在我想设置标题字段并禁用 url 字段(如果页面是 选择。或者使用标题和 url 字段。 如果我注册这样的脚本:
apos.define('apostrophe-array-editor-modal', {
extend: 'apostrophe-modal',
source: 'arrayEditor',
...
});
我覆盖了原来的 array-modal.js,但我只想注册一个更改处理程序并在保存前检查输入。
我的目标是管理员可以在全局部分编辑的 (footer/static) link 列表,我可以在多个页面中使用它们。
谢谢!
我的建议是为每个 link 创建某种类型的 type
字段,其中编辑器在内部页面连接和外部页面连接之间做出选择 URL.
select
模式字段有一个 showFields
参数,可以 hide/show 部分模式形式基于所做的选择,请在此处查看文档 http://apostrophecms.org/docs/tutorials/getting-started/schema-guide.html#code-select-code
你的代码看起来像
name: 'links',
label: 'Links',
type: 'array',
titleField: 'title',
schema: [{
name: 'title',
label: 'Title',
type: 'string'
}, {
name: 'linkType',
type: 'select',
label: 'Type',
choices: [{
label: 'External',
value: 'external',
showFields: ['url']
}, {
label: 'Internal',
value: 'internal',
showFields: ['_page']
}]
}, {
name: 'url',
label: 'Url',
type: 'url'
}, {
name: '_page',
label: 'Page',
type: 'joinByOne',
withType: 'apostrophe-page',
idField: 'pageId',
filter: {
projection: {
title: 1,
slug: 1
}
}
}]
在您的模板中,您始终可以检查 linkType
的值来做出标记决定。