KeystoneJS:数据库中的站点范围配置变量
KeystoneJS: site-wide configuration variables in database
使用 KeystoneJS 创建站点时,如何添加一些存储在数据库中的站点范围的配置变量 - 最好通过管理员进行操作 - 按照 Craft CMS's 'globals' 的思路?
我在 Keystone database documentation 中找不到任何关于此的内容,如果可能的话,我宁愿不使用带有 Keystone 列表的单例(例如,通过实现只有一个项目的列表)。
我刚刚与一位 Keystone 开发人员就此进行了交谈。它已经 widely discussed on ProductPains,事实证明,目前(从 0.3.x 开始)拥有一个带有列表的单例是唯一的方法:
- 定义一个新模型,例如
models/Configuration.js
:
const keystone = require('keystone');
const Types = keystone.Field.Types;
const Configuration = new keystone.List('Configuration', {
nocreate: true,
nodelete: true,
label: 'Configuration',
path: 'configuration',
});
Configuration.add({
siteName: { type: String },
siteDescription: { type: Types.Textarea },
});
Configuration.defaultColumns = 'siteName, siteDescription';
Configuration.register();
- 添加更新,例如
updates/0.0.2-configuration.js
:
exports.create = {
Configuration: [
{ 'siteName': 'My site', 'siteDescription': 'TODO' }
]
};
使用 KeystoneJS 创建站点时,如何添加一些存储在数据库中的站点范围的配置变量 - 最好通过管理员进行操作 - 按照 Craft CMS's 'globals' 的思路?
我在 Keystone database documentation 中找不到任何关于此的内容,如果可能的话,我宁愿不使用带有 Keystone 列表的单例(例如,通过实现只有一个项目的列表)。
我刚刚与一位 Keystone 开发人员就此进行了交谈。它已经 widely discussed on ProductPains,事实证明,目前(从 0.3.x 开始)拥有一个带有列表的单例是唯一的方法:
- 定义一个新模型,例如
models/Configuration.js
:
const keystone = require('keystone');
const Types = keystone.Field.Types;
const Configuration = new keystone.List('Configuration', {
nocreate: true,
nodelete: true,
label: 'Configuration',
path: 'configuration',
});
Configuration.add({
siteName: { type: String },
siteDescription: { type: Types.Textarea },
});
Configuration.defaultColumns = 'siteName, siteDescription';
Configuration.register();
- 添加更新,例如
updates/0.0.2-configuration.js
:
exports.create = {
Configuration: [
{ 'siteName': 'My site', 'siteDescription': 'TODO' }
]
};