关于 Apostrophe CMS 页面树中​​的内容继承

About content inheritance in page trees in Apostrophe CMS

我希望我的撇号项目在页面层次结构中重复使用一些小部件,类似于页眉、页脚或垂直导航的工作方式,尤其是后者。但是,我想避免使用 data.global,因为我希望该内容仅出现在我添加的页面的子树中,而不是出现在所有页面中。例如,这将允许我在网站中定义 "sections" 与一些特定的 header/footer 共同点,而不管模板如何。

另一个用例是在没有 apostrophe-multisite 模块的情况下创建多站点项目的可能性,如果您不想跨站点共享任何内容,它会很好用,但在我的一些用例中我需要在许多网站上共享作品和图像等内容(例如,对于赞助商,或在没有绝对 URL 但有连接的情况下链接它们)。

我能否通过在模板区域(或任何我真的不知道的地方)查询祖先区域并将其内容包含在实际页面区域之前的内容来实现这一点?如果是这样,从撇号的角度来看是否有意义,或者性能是否会受到这种递归查询的很大影响?

是的,你可以按照你的要求去做。

默认情况下,data.page._ancestors 不会为祖先区域调用小部件加载器,出于性能原因,正如您所怀疑的那样。

但是,您可以选择加入:

// in lib/modules/apostrophe-pages/index.js of your own project
// (do NOT modify it in node_modules/apostrophe!)

module.exports = {
  // other configuration here, then...
  filters: {
    ancestors: {
      children: {
        areas: [ 'thumbnail' ]
      }
    }
  }
};

这将为每个祖先调用专门用于称为 thumbnail 的区域的小部件加载器,但不会调用任何其他祖先。这比设置 areas: true 的性能要好得多,但如果你真的想等待,你也可以这样做!