【问题标题】:How to add navigation to a custom Magnolia CMS template?如何向自定义 Magnolia CMS 模板添加导航?
【发布时间】:2013-01-12 10:08:00
【问题描述】:

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

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

但是,我想将导航插入到我的模板中,但找不到简单的方法。看起来其他人遇到了这个问题,没有明确的方法来解决它。有谁知道如何轻松包含导航?谢谢

【问题讨论】:

    标签: java content-management-system magnolia


    【解决方案1】:

    如果您使用 Magnolia CE(社区版)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]
    

    垂直导航:

    [#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 > 导航...有一些汤姆猫问题,所以我还不能测试它。
    • 是的,这确实很重要。只需将它放在“helloWorld”模板节点下,这样它就可以映射到您的模型类(STKPageModel)。而且我个人建议(我真的不知道是否更好)将页面模板放在/modules/standard-templating-kit/templates 下,因为您的模板依赖于这个模块(通过使用StkPageModel 类)。在实践中,您应该创建一个新的自定义模块来扩展现有的标准模板套件模块。
    • 在使用模板 [template:pages/helloWorld] 添加模型类时出现错误 [/hello]:RenderException: info.magnolia.rendering.engine.RenderException: Can' t 实例化模型:class info.magnolia.module.templatingkit.templates.pages.STKPageModel"
    • 1.你有什么版本的 Magnolia? 2.你有安装stk吗? (在 /config/modules 中查找名为 standard-template-kit 的节点)
    • 我们已经解决了 - 我们正在运行 4.5 的社区版。谢谢你的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    相关资源
    最近更新 更多