首页 > 解决方案 > Apostrophe CMS 中自定义 npm 模块中的模板覆盖

问题描述

为了在我的大多数 Apostrophe 项目中都有一个通用的设置,我计划构建一些自定义的 npm 模块来捆绑它们并将它们添加到我的项目中。除了添加小部件和后端功能外,我想在其中做的一些功能是编辑官方撇号模块的设置(例如,为 设置默认页面类型apostrophe-pages)和覆盖 nunjuck 块和/或模板。

使用 Apostrophe 的隐式子类化机制可以轻松地在项目级配置上覆盖这两件事,因此我可以使用自定义样板来实现为不同项目共享通用基础设置的目标,尽管我会失去通过发布来升级我的默认值的能力我的节点模块的新版本。

总而言之,我在考虑这样的 Maven 风格的依赖层次结构:

Apostrophe npm modules <- custom npm modules <- project modules

来自基于 Java 和 Maven 的 CMS,我知道我需要在很多事情上改变我的思维方式,所以:我正在尝试做的事情是否可行,在 Apostrophe 世界中是否有意义?什么是“撇号方式”来实现这样的目标?我是否需要为improve要扩展的每个模块创建一个带有 moog 选项的自定义 npm 模块?

提前致谢。

标签: apostrophe-cms

解决方案


即使在npm_modules目录中,撇号将首先搭建基础模块,然后扩展这些模块的模块,这意味着您的自定义 npm 模块将遵循与官方撇号模块相同的继承链。您可以像使用任何其他撇号模块一样覆盖它们。

meta module (apostrophe-pieces) > custom-pieces (piece extension, custom npm module) > custom-pieces (project-level overrides)

您只需以lib/modules/与覆盖 的部分相同的方式选择性地覆盖文件和方法apostrophe-blog,例如lib/modules/custom-pieces/views/widget.html

我是否正确理解您想要覆盖事物的方式?


推荐阅读