Java 如何向自定义Magnolia CMS模板添加导航?

Java 如何向自定义Magnolia CMS模板添加导航?,java,content-management-system,magnolia,Java,Content Management System,Magnolia,根据本教程,我已经很容易地为Magnolia CMS创建了一个自定义页面模板: 然而,我现在想将导航插入到我的模板中,但是我找不到一个简单的方法来实现。看起来其他人也有这个问题,但没有明确的解决方法。有人知道如何轻松地包含导航吗?感谢如果您使用的是Magnolia CE(Community Edition)4.5.x,您需要知道,基本上每个页面模板都扩展了/modules/standard templating kit/config/site/templates/prototype中定义的模板

根据本教程,我已经很容易地为Magnolia CMS创建了一个自定义页面模板:


然而,我现在想将导航插入到我的模板中,但是我找不到一个简单的方法来实现。看起来其他人也有这个问题,但没有明确的解决方法。有人知道如何轻松地包含导航吗?感谢如果您使用的是Magnolia CE(Community Edition)4.5.x,您需要知道,基本上每个页面模板都扩展了
/modules/standard templating kit/config/site/templates/prototype
中定义的模板。这里有一个节点,
/navigation
。您可以将该节点复制到新的自定义模板中,然后可以开始使用其属性

但在此之前,不要忘记在主模板文件(
.ftl
)的某个地方包含导航菜单,并使模板使用stk model class
info.magnolia.module.templatingkit.templates.pages.STKPageModel
(向模板添加名为modelClass的属性,查看stkArticle(或stkssection),这是一个很好的起点)

水平导航:

[#if def.navigation.top]
    [#include def.navigation.horizontal.template]
[/#if]
垂直导航:

[#if def.navigation.top]
    [#include def.navigation.vertical.template]
[/#if]
如果您想将菜单包含在另一个包含
[@cms.area…]
标记的模板中, 您可以使用以下代码:

[#if model.root.def.navigation.top]
    [#include model.root.def.navigation.vertical.template]
[/#if]

谢谢弗拉德,很好的简单回答。你只有一个问题。我是否应该将导航节点放在我的“helloWorld”页面节点下以获取它?我把它放在树上的什么地方重要吗?现在我在模块>模板>模板>页面>helloWorld>导航中找到了它。。。有一些tom-cat问题,所以我还不能测试它。是的,事实上这很重要。只需将它放在“helloWorld”模板节点下,就可以映射到您的模型类上(
STKPageModel
)。我个人建议(我真的不知道是否更好)将页面模板放在
/modules/standard templating kit/templates
下,因为您的模板依赖于此模块(通过使用
StkPageModel
类)。实际上,您应该创建一个新的自定义模块来扩展现有的标准模板工具包模块。在使用模板[templating:pages/helloWorld]呈现[/hello]时添加modelClass”错误后,我遇到了一个错误:RenderException:info.magnolia.rendering.engine.RenderException:无法实例化模型:class info.magnolia.module.templatingkit.templates.pages.STKPageModel“1”。你们有什么版本的木兰花?2.你安装了stk吗?(在您的/config/modules中查找一个名为标准模板工具包的节点)我们对其进行了分类—我们正在运行社区版的4.5。谢谢你的帮助!