apostrophe-cms - 关于 Apostrophe CMS 中页面树中的内容继承
问题描述
我希望我的撇号项目在页面层次结构中重用一些小部件,类似于页眉、页脚或垂直导航的工作方式,尤其是后者。但是,我想避免使用data.global
,因为我希望该内容仅出现在我添加它的页面的子树中,而不是所有页面中。例如,这将允许我在网站中定义具有某些特定页眉/页脚的“部分”,而不管模板如何。
另一个用例是在没有模块的情况下创建多站点项目的可能性,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
,但如果你真的想等待,你也可以这样做!
推荐阅读
- c++ - 变量的创建是否取决于范围?
- r - 使用 R 选择时间序列数据中的特定时期
- javascript - 未捕获节点获取 HTTP 错误
- javascript - 使用 Facebook for Web 进行 Firebase 身份验证不起作用
- php - 如何在 laravel 中定义一个全局变量?
- syntax-error - Seq2seq rnn 用于语法错误修复
- javascript - 二维数组读取问题javascript
- swift - 如何处理 Swift startDeviceMotionUpdates 处理程序中的许多功能?
- ios - 我的 NPM 依赖项需要另一个 NPM 依赖项“react-native-vector-icons”,但未安装 pod“RNVectorIcons”
- javascript - React.js / Leaflet -- 仅在 DevServer 中的 Mount 上运行 useEffect