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' }
  ]
};