2017-09-14 79 views
0

我想使用freemarker語言在liferay 7中構建一個超級菜單(多級菜單)。我使用的主題只是打印菜單,但不是多層次的。使用freemarker構建Liferay 7超級菜單(多級菜單)

如何更改代碼並添加我的類和js?

的代碼是:

<nav class="navbar-nav navbar-right site-navigation" id="navigation" role="navigation"> 
     <#assign 
     VOID = freeMarkerPortletPreferences.setValue("displayDepth", "1") 
     VOID = freeMarkerPortletPreferences.setValue("portletSetupPortletDecoratorId", "barebone") 
     /> 

     <@liferay.navigation_menu 
     instance_id="main_navigation_menu" 
     default_preferences="${freeMarkerPortletPreferences}" 
     /> 

     <#assign VOID = freeMarkerPortletPreferences.reset() /> 

    </nav> 
+0

愚蠢的問題,因爲我不知道心臟:當您將displayDepth設置爲2或更多時會發生什麼? –

+0

這很難解釋,但是......如果你在這些頁面上,它只顯示深度2的鏈接。如果您處於深度1或其他頁面,則該菜單不顯示任何鏈接。 – isin

回答

0

我設法打印帶有freemarker的語言鏈接:

我創建custom_navigation.ftl文件,並用下面的代碼添加它portal_normal.ftl:

<#if has_navigation> 
    <#include "${full_templates_path}/custom_navigation.ftl" /> 
</#if> 

該custom_navigation.ftl代碼:

<ul class="nav navbar-nav"> 
    <#assign count = 0 /> 
    <#list nav_items as nav_item> 
     <#assign count = count +1 /> 
     <#assign nav_item_class = "item-" + count /> 

     <#if count == 1> 
      <#assign nav_item_class = nav_item_class + " first" /> 
     </#if> 

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

     <#if nav_item.hasChildren() > 
      <#assign nav_item_class = nav_item_class + " dropdown mega-dropdown" /> 
     </#if> 

     <#if nav_item.hasChildren()> 
      <li class="${nav_item_class}"> 
       <a href="${nav_item.getURL()}" ${nav_item.getTarget()} class="dropdown-toggle" data-toggle="dropdown"> 
        <span class="glyphicon glyphicon-menu-hamburger pull-left"></span> ${nav_item.getName()} 
       </a> 

       <ul class="dropdown-menu mega-dropdown-menu row"> 
        <#list nav_item.getChildren() as nav_child> 
         <li class="col-sm-3"> 
          <ul> 
           <li class="dropdown-header"><a href="${nav_child.getURL()}" ${nav_child.getTarget()}>${nav_child.getName()}</a></li> 
           <#if nav_child.hasChildren()> 
            <#list nav_child.getChildren() as nav_child_2> 
             <li><a href="${nav_child_2.getURL()}" ${nav_child_2.getTarget()}>${nav_child_2.getName()}</a></li> 
            </#list> 
           </#if> 
          </ul> 
         </li> 
        </#list> 
       </ul> 
      </li> 
     <#else> 
      <li class="${nav_item_class}"> 
       <a href="${nav_item.getURL()}" ${nav_item.getTarget()}> 
        <span>${nav_item.getName()}</span> 
       </a> 
      </li> 
     </#if> 

    </#list> 
    </ul> 
</nav> 

和我遵循的引導mega菜單示例是this

最後,您需要一些CSS更改以適應您的顏色和品味。