如何将导航添加到自定义Magnolia CMS模板?

Mat*_*ert 3 java content-management-system magnolia

我已经成功地按照本教程为Magnolia CMS创建了一个自定义页面模板:

http://documentation.magnolia-cms.com/templates/introduction.html

但是,我正处于将导航插入模板的位置,但我找不到一种简单的方法.看起来其他人有这个问题没有明确的方法来解决它.有谁知道如何轻松包含导航?谢谢

Vla*_*che 6

如果您正在使用Magnolia CE(Community Edition)4.5.x,您需要知道基本上每个页面模板都扩展了定义的模板/modules/standard-templating-kit/config/site/templates/prototype.你有一个节点,/navigation.您可以将该节点复制到新的自定义模板,然后您可以开始使用它的属性.

但在此之前,不要忘记在主模板文件中包含导航菜单().ftl并使模板使用stk模型类info.magnolia.module.templatingkit.templates.pages.STKPageModel(在模板中添加一个名为modelClass的属性,查看stkArticle(或stkSection)) ,这是一个开始的好地方)

水平导航:

[#if def.navigation.top]
    [#include def.navigation.horizontal.template]
[/#if]
Run Code Online (Sandbox Code Playgroud)

垂直导航:

[#if def.navigation.top]
    [#include def.navigation.vertical.template]
[/#if]
Run Code Online (Sandbox Code Playgroud)

如果要将菜单包含在[@cms.area ...]标记附带的另一个模板中,可以使用以下代码:

[#if model.root.def.navigation.top]
    [#include model.root.def.navigation.vertical.template]
[/#if]
Run Code Online (Sandbox Code Playgroud)

  • 是的,实际上它确实很重要.只需将它放在"helloWorld"模板节点下,就可以将其映射到模型类(`STKPageModel`)上.我个人建议(我真的不知道是否更好)将页面模板放在`/ modules/standard-templating-kit/templates`下,因为你的模板依赖于这个模块(通过使用`StkPageModel `class).实际上,您应该创建一个新的自定义模块来扩展现有的标准模板套件模块. (2认同)