javascript - Apostrophe-pieces-pages 无法注册页面类型

标签 javascript node.js apostrophe-cms

我尝试创建一个新的 pieces 页面,有点像撇号 cms 中的博客风格。我有 trainingstrainings-widgetstrainings-pages 文件夹。我在app.js中注册了它们;单独的部分和小部件工作得很好。问题是当我尝试添加培训类型的页面时。我在控制台中收到 Error: template not found: pages/trainings-page.html

我在 apostrophe-pages/index.js 中配置了它:

module.exports = {
    types: [{
            name: 'home',
            label: 'Home'
        },
        {
            name: 'trainings-page',
            label: 'Trainings'
        }
    ]
}

trainings-pages/index.js 中:

module.exports = {
    name: 'trainings-page',
    label: 'Training Page',
    extend: 'apostrophe-pieces-pages',
    piecesFilters: []
}

我不知道这里可能出了什么问题。

编辑:展示 git: https://github.com/msdsk/apostrophe-error

最佳答案

除了模块目录名称不正确之外,如前所述:

lib/modules/trainigs-pages 应该是:

lib/modules/trainings-pages

当我们解决这个问题时,我们会遇到一个新的错误:

错误:找不到模板:trainings-pages:layout.html

您正在扩展 layout.html。但该文件位于不同的模块 apostrophe-pages 中,trainings-pages 未扩展,因此从未找到。这是我们的错,因为我们没有在教程中为 layout.html 推荐一个更通用的位置。

有两种解决方法:

选项一

  1. layout.html 移动到 lib/modules/apostrophe-templates/views/layout.html

  2. 总是像这样扩展它:

{% extends 'apostrophe-templates:layout.html' %}

无论您在哪个模块中,这种“跨模块”路径语法都可以在 apostrophe-templates 模块中找到。

选项二

另一种选择是在 app.js 中设置 apostrophe-templatesviewsFolderFallback 选项,如下所示:

'apostrophe-templates': { 
  viewsFolderFallback: __dirname + '/views'
},

并在项目的顶层创建一个 views/ 文件夹,并将 layout.html 移到那里。然后你不必使用特殊的语法,你可以只写 layout.html 如果模块没有自己的,它会在 fallback 文件夹中查找。这是我们通常在内部做的事情。

我将与撇号核心团队的其他成员讨论本教程应该推荐选项一还是选项二,并调整撇号 CLI 以自动设置选项二(如果首选)。

(还有第三种选择:你可以把东西放在 lib/modules/apostrophe-module/views 中,它可以作为后备而不需要任何配置。那是因为所有模块最终都继承自 apostrophe-module。但我们过去的感觉是这种方法不是很直观。)

关于javascript - Apostrophe-pieces-pages 无法注册页面类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47016305/

相关文章:

javascript - 我可以基于多个属性进行 _.flatten 吗?

javascript - ActiveXObject 未定义,找不到变量 : ActiveXObject

node.js - 在nodejs中导入外部类

css - 撇号 CMS,如何在一 block 中设置富文本样式

javascript - 哪些 JavaScript 对象的原型(prototype)中有 addEventlistener?

javascript - 如何强制用户在 JavaScript 加载之前不要点击(灯箱)

node.js - casperjs中的waitforSelector函数

node.js - NodeJS REST API 模型和服务结构

apostrophe-cms - 我可以将选择/选项数据类型添加到撇号 cm 小部件中的字段类型吗?

javascript - 如何访问 apos.define 中的选项?