添加Projection后Apostrophe中piece._page._url无法生成链接问题
问题根源分析
你添加的projection配置只限定了focuslink条目本身的字段(slug、title等),但没有包含关联的_page对象所需的数据。Apostrophe CMS在使用projection时,不会自动加载joinByOne关联的其他文档,必须显式指定要获取关联对象的哪些字段,否则模板里的piece._page会是不完整的(甚至为undefined),自然无法读取_page._url。
解决方案
修改app.js中supernode-focuslinks-widgets的projection配置,加入_page及其需要的_url字段:
'supernode-focuslinks': {}, 'supernode-focuslinks-widgets': { extend: 'apostrophe-pieces-widgets', filters: { projection: { slug: 1, title: 1, type: 1, tags: 1, // 显式请求关联页面的_url字段 _page: { _url: 1 } } } },
额外说明
如果之后你的模板需要用到关联页面的其他字段(比如页面标题title),可以在_page的配置里添加对应的字段:
_page: { _url: 1, title: 1 }
这样就能在模板中正常使用piece._page.title这类数据了。
内容的提问来源于stack exchange,提问作者trondulseth
相关产品推荐
相关产品推荐

