在不同的div中创建Lift嵌套子菜单

时间:2013-07-31 07:37:07

标签: scala lift

我正在尝试构建嵌套的菜单结构,但子菜单应该出现在页面上的其他元素中。

对子菜单进行分组和隐藏将使它们始终显示,而不仅仅是在激活父菜单后。

Menu.i("Startseite") / "index" >> Hidden >> LocGroup("servicenav"),
    Menu.i("Impressum") / "about"/"index" >> Hidden >> LocGroup("servicenav"),

    Menu.i("menu_1") / "100_menu1" submenus(
        Menu.i("menu_1a") / "100_menu1a" >> Hidden >> LocGroup("sidenavbar"),
        Menu.i("menu_1b") / "200_menu1b" >> Hidden >> LocGroup("sidenavbar"),
        Menu.i("menu_1c") / "300_menu1c" >> Hidden >> LocGroup("sidenavbar")
    ),

    Menu.i("menu_2") / "400_menu2" submenus(
        Menu.i("menu_2a") / "400_menu2a" >> Hidden >> LocGroup("sidenavbar"),
        Menu.i("menu_2b") / "500_menu2b" >> Hidden >> LocGroup("sidenavbar")
    )
)

和html部分:

<ul id="mainnav">
    <lift:Menu.builder li_item:class="open" li_path:class="open">
    Upper Navigation Panel for primary Menu
    </lift:Menu.builder>
 </ul>

<ul id="nav">
<lift:Menu.group group="sidenavbar" a:class="firstChild">
    Side-Navigation panel for submenus
<li><menu:bind /></li>
</lift:Menu.group>
</ul>

有人有个好主意吗?

提前致谢

4 个答案:

答案 0 :(得分:0)

您没有在HTML的第一部分中指定“组”。也许这会有所帮助?

答案 1 :(得分:0)

我第一次错误地理解你了。

level会解决您的问题吗?

  

级别:要显示的整个所选菜单树的级别。对于顶级,计数从零开始。考虑一个带有'item1','item2'和'item3'的顶级菜单,假定'item1'有一个子菜单,其中包含项'item1a'和'item1b'。级别0将显示顶级加子菜单(请参阅下一个选项)。如果选择了item2或item3,则level 1将不显示任何内容,而如果选择了item1变体之一,则将显示item1a和item1b条目。

https://www.assembla.com/wiki/show/liftweb/SiteMap#using_sitemap_in_templates

答案 2 :(得分:0)

好的,我通过对顶级菜单进行分组并让子菜单显示在主站点地图中来创建一种解决方法。这样,可以应用level-parameter,因此只有活动子菜单出现在div中。

Menu.i("Startseite") / "index" >> Hidden >> LocGroup("servicenav"),
Menu.i("Impressum") / "about"/"index" >> Hidden >> LocGroup("servicenav"),

Menu.i("menu_1") / "100_menu1" >> LocGroup("mainnavbar") submenus(
    Menu.i("menu_1a") / "100_menu1a",
    Menu.i("menu_1b") / "200_menu1b",
    Menu.i("menu_1c") / "300_menu1c"
),

Menu.i("menu_2") / "400_menu2" >> LocGroup("mainnavbar") submenus(
    Menu.i("menu_2a") / "400_menu2a",
    Menu.i("menu_2b") / "500_menu2b"
)

HTML:

<ul id="mainnav">
    <lift:Menu.group group="mainnavbar" level="1">
    <li><menu:bind />
    </li>
    </lift:Menu.group>
 </ul>

<div id="navblock">
    <ul id="nav">
    <lift:Menu.builder level="1" li_item:class="opfirstChildOpenen" li_path:class="firstChildOpen">
     Side-Navigation panel for submenus
    </lift:Menu.builder>
    </ul>
</div>

答案 3 :(得分:0)

所以,终于找到了解决方案。

我添加了两个站点地图。第一个用level =“0”和expand =“false”,第二个用level =“1”。但是,如果单击第二个菜单,则无论expand参数如何,第一个菜单都会展开。所以我在样式表中将第一个菜单中以下

  • 的宽度和高度设置为0.

    不干净,但有效......

    <ul id="mainnav">
        <lift:Menu.builder li_path:class="open" level="0" expand="false">
    
            Top Menu
    
        </lift:Menu.builder>
     </ul>
    

    <ul id="nav">
        <lift:Menu.builder level="1" li_item:class="current" li_path:class="open">
    
            Side-menu
    
        </lift:Menu.builder>
    </ul>
    

    ul#mainnav li ul li{
    height: 0;
    width: 0;
    }