我希望我的Apostrophe项目在页面层次结构下重用一些小部件,类似于页眉,页脚或垂直导航的工作方式,尤其是后者。但是,我想避免使用data.global
,因为我希望该内容仅出现在我要添加的页面的子树中,而不出现在所有页面中。例如,这使我可以在网站中定义“节”,而无论模板如何,它们都具有一些共同的特定页眉/页脚。
另一个用例是不用apostrophe-multisite
模块就可以创建多站点项目,如果您不想在各个站点之间共享任何内容,那么这很好用,但是在我的一些用例中,我需要共享诸如片断和图像之类的内容(例如,对于赞助者而言,或没有绝对URL但具有链接的链接形式)在许多网站上都有投放。
我可以通过在模板区域(或我真正不知道的任何地方),在祖先中查询该区域,并将其内容包括在实际页面区域中的区域之前来实现该目标吗?如果是这样,那么从Apostrophe的角度来看是否有意义,还是这种递归查询会极大地影响性能?
答案 0 :(得分:1)
是的,您可以按照自己的要求做。
默认情况下,出于性能原因,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
的性能要好得多,但是如果您真的想等待,也可以这样做!