首页 > 解决方案 > 关于 Apostrophe CMS 中页面树中的内容继承

问题描述

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

另一个用例是在没有模块的情况下创建多站点项目的可能性,apostrophe-multisite如果您不想跨站点共享任何内容,这非常有用,但在我的一些用例中,我需要共享诸如片段和图像之类的内容(例如,对于赞助商,或者在没有绝对 URL 但有加入的情况下链接它们)在许多网站上。

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

标签: apostrophe-cms

解决方案


是的,你可以做你所要求的。

默认情况下,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,但如果你真的想等待,你也可以这样做!


推荐阅读