在 Apostrophe CMS 中自定义件管理模式

Customizing pieces management modal in Apostrophe CMS

我正在使用 apostrophe-samples Github project to do some tests regarding the pieces modal customization. So far, I've added filters as explained in the tutorials,并添加了在 apostrophe-pieces 源代码中看到的列(恕我直言,我认为添加到教程中会是一个有趣的主题)。

但是,我有一些疑问,例如 specialists joinByArray products产品 joinByArrayReverse 专家:

"Can columns be sorted in any way through the UI (e.g., an option that enables sorting by clicking the table header) or does it rely entirely on the piece's defaultSort?"

目前没有,没有。目的是提供此功能,但到目前为止尚未构建,令人惊讶的是,尽管它肯定是一个常见功能,但它并不是我们自己的客户的迫切需求。

它将对社区做出很好的贡献,或者可以通过撇号企业支持进行赞助。可能不会花很长时间添加。

"Can other fields other than the title be added as filters? I was able to add _specialists as products filter, displaying the title, but I'm wondering if a different field could be used."

目前还没有,但这将是一个简单的 PR。这是 relevant line of code in apostrophe-schemas/index.js。您可以在此处访问 field 对象,因此如果设置了 field.filterLabelField,您可以轻松地执行 PR 以查看 doc 的不同 属性,比方说,仍在下降回到 title.

"Can reverse joins be added as filters? As said, I was able to add _specialists as products filter, but not the other way around."

目前没有。在 lib/modules/apostrophe-schemas/index.js 中,您会看到目前没有 addFilter 属性 这些。实施是可能的。该代码需要在反面获取所选文档,获取它加入的 ID 或 ID 数组,然后链接一个 .and({ $in... }) 调用。

"Can joins/reverse joins be added as columns? If I add '_specialists' as a column, I get displayed an array like [Object], not the title as in the filter."

今天支持这个。您需要为该列设置一个 partial 属性。这只是一个接受列值和 returns 字符串的函数。例如:

addColumns: [
  {
    name: '_specialists',
    partial: specialists => specialists.map(specialist => specialist.title).join(' ')
  }
]

对于这种情况,最好有一个更好的默认行为,而不是假设可以将其显示为字符串。