如何获取WCM(Liferay)中的页面列表?

时间:2015-10-08 13:55:10

标签: liferay freemarker

我尝试使用包含导航(页面列表)的模板创建Web内容:

<nav id="navigation">
    <ul>
        <#list nav_items as nav_item>
            <#assign nav_item_css_class = "" />

            <#if nav_item.isSelected()>
                <#assign nav_item_css_class = "selected" />
            </#if>

            <li class="${nav_item_css_class}">
                <a href="${nav_item.getURL()}">${nav_item.getName()}</a>

                <#if nav_item.hasChildren()>
                    <ul class="child-menu">
                        <#list nav_item.getChildren() as nav_child>
                            <#assign nav_child_css_class = "" />
                            <#if nav_item.isSelected()>
                                <#assign nav_child_css_class = "selected" />
                            </#if>
                            <li class="${nav_child_css_class}">
                                <a href="${nav_child.getURL()}">${nav_child.getName()}</a>
                            </li>
                        </#list>
                    </ul>
                </#if>
            </li>
        </#list>
    </ul>
</nav>

但是我收到了这个错误:

Expression nav_items is undefined

在我的主题navigation.ftl中,它有效,但在WCM中ftl FreeMarker )不起作用。 那么,我怎样才能获得WCM中的页面列表?

1 个答案:

答案 0 :(得分:3)

页面列表仅在ADTs(应用程序显示模板)中可用,而不在WCM templates中。

如果您确实需要该列表并且可以使用ADT,请改用navItems变量。变量nav_items仅适用于主题(为了向后兼容,我猜)。

文档 - 很难找到。使用力量,阅读来源 - GitHub

您可能希望使用方便的Freemarker脚本来显示所有可用变量 - 请参阅James Falkner博客上的Dumping ADT+WCM Template Variables