【问题标题】:Apostrophe: Pulling in custom global settings into beforeConstruct for piece module (blog)撇号:将自定义全局设置拉入 beforeConstruct for piece 模块(博客)
【发布时间】:2018-01-24 22:42:23
【问题描述】:

我正在尝试提取我在具有数组字段类型的适当区域中创建的自定义全局设置。

我想将全局设置拉入博客模块以构建一个字段以添加到博客类型。我尝试按照教程文档中的描述使用撇号模型层和 mongo db 集合,但看起来那些需要一些req 交互或self.method 才能正确触发,我认为@987654323 中没有这些@函数。

// This would ideally be a data.global.arrayField
var optionArraySet = ['Item 1', 'Item 2', 'Item 3'];
var formattedArraySet = [];
for (var type in optionArraySet) {
  formattedArraySet.push({
    label: optionArraySet[type],
    value: optionArraySet[type]
  })
}
options.addFields = [
  {
    label: 'Custom Array Field',
    name: 'customArrayField',
    type: 'select',
    choices: formattedArraySet
  }
].concat(options.addFields || [])

所以optionArraySet 最好是通过包含我要访问的数据数组的全局设置。

对于上下文,这个全局设置将应用于几个不同的区域,如果我们想更改值,我不必更新后端的代码,我可以将新值添加到全局设置中的数组集并让前端页面更新其显示,并在适当的部分更新设置字段。

如果这有帮助,我基本上是在尝试控制内容编辑器可以在特定片段类型上选择的标签,以便他们无法输入不需要的标签。

construct: function(self, options) {
 self.beforeSave = function(req, piece, options, callback) {
  var newTags = [];

  newTags.push(piece.anotherFieldValue);

  var customArrayField = piece.customArrayField;

  for (var option in customArrayField) {
    newTags.push(customArrayField[option]);
  }

  piece.tags = newTags;
  return callback();
 };
}

谢谢

【问题讨论】:

    标签: javascript mongodb apostrophe-cms


    【解决方案1】:

    由于可以随时编辑全局设置,并且beforeConstruct仅在站点启动时执行,因此读取那里的全局设置并没有真正的用处。

    有一些方法可以在运行时修补架构,但有一个更简单的解决方案:

    1. 创建一个新的片段类型模块,“特殊标签”。将name 设置为special-tag

    2. 使用名为_specialTagsjoinByArray 架构字段加入withType: 'special-tag'

    现在用户在编辑在其架构中具有此连接的文档时只能从特殊标签列表中进行选择,并且管理员可以像任何其他作品类型一样通过管理栏编辑特殊标签。连接与文档一起加载,因此您可以访问,例如,._specialTags 并查找具有包含标签名称的 title 属性的文档数组。

    有关joinByArray的更多信息,请参阅:

    http://apostrophecms.org/docs/tutorials/getting-started/schema-guide.html#code-join-by-array-code

    还有一般的架构指南。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多