Apostrophe扩展apostrophe-blog模块:添加页面时模板未找到
咱们来拆解下你遇到的问题:当你扩展apostrophe-blog创建staff-faculty-blog模块后,系统提示找不到对应页面模板,这其实是Apostrophe框架的约定式规则导致的,咱们一步步来解决:
为什么系统会查找pages/staff-faculty-blog-page.html?
Apostrophe对于页面类型模块(比如你的staff-faculty-blog,本质是一个自定义博客页面类型),会自动遵循[模块名]-page.html的命名规则去寻找对应页面模板,并且默认从项目根目录下的views/pages/目录里查找。这是框架为了让模块与模板的对应关系更清晰统一而设定的规则。
具体解决步骤
创建对应模板文件
在项目根目录下新建或找到views/pages/文件夹,在其中创建staff-faculty-blog-page.html文件。如果views/pages/目录不存在,直接手动创建即可。填充模板基础内容
你可以直接复用官方apostrophe-blog的页面模板逻辑,再根据需求调整。最简单的方式是复制node_modules/apostrophe-blog/views/pages/blog-page.html的内容到你刚创建的模板文件中,比如基础模板示例:{% extends "layout.html" %} {% block main %} <h1>{{ page.title }}</h1> {# 复用博客列表的渲染逻辑 #} {% include "apostrophe-blog:widgets/blog.html" %} {% endblock %}之后你可以根据
staff-faculty-blog的需求,修改标题样式、添加内容过滤逻辑等。可选:自定义模板存放路径
如果你想把模板放在模块内部(比如lib/modules/staff-faculty-blog/views/),可以在staff-faculty-blog模块的index.js中配置viewsFolder属性,指定模板位置:module.exports = { extend: 'apostrophe-blog', name: 'staff-faculty-blog', // 指定模块内的模板文件夹路径 viewsFolder: __dirname + '/views' };然后把
staff-faculty-blog-page.html放在lib/modules/staff-faculty-blog/views/pages/目录下即可。
验证效果
重启你的Apostrophe应用,再次尝试创建staff-faculty-blog类型的页面,应该就不会再出现模板缺失的提示了。
内容的提问来源于stack exchange,提问作者Jer'Maine Jones

