modxmodx-evolutionwayfinder

Create a Bootstrap menu with WayFinder


Trying to create a Bootstrap menu with WayFinder. How to finish it?

<ul class="nav navbar-nav">
   <li class="dropdown">
      <a href="#" class="dropdown-toggle" id="drop1" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> Dropdown <span class="caret"></span> </a> 
      <ul class="dropdown-menu" aria-labelledby="drop1">
         <li><a href="#">Action</a></li>
         <li><a href="#">Another action</a></li>
         <li><a href="#">Something else here</a></li>
         <li role="separator" class="divider"></li>
         <li><a href="#">Separated link</a></li>
      </ul>
   </li>
   <li class="dropdown">
      <a href="#" class="dropdown-toggle" id="drop2" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> Dropdown <span class="caret"></span> </a> 
      <ul class="dropdown-menu" aria-labelledby="drop2">
         <li><a href="#">Action</a></li>
         <li><a href="#">Another action</a></li>
         <li><a href="#">Something else here</a></li>
         <li role="separator" class="divider"></li>
         <li><a href="#">Separated link</a></li>
      </ul>
   </li>
</ul>

My WayFinder call so far:

[[Wayfinder? &startId=`0` &level=`1`
                               &hideSubMenus=`TRUE` &includeDocs=`1,2,3,4,5,55,7,8,74`
                               &outerTpl=`chunk_navigation-menu`]]

And my chunk_navigation-menu looks like this: <ul class="navbar-nav nav">[+wf.wrapper+]</ul>


Solution

  • First of all, I am assuming you are using MODX Evolution.

    The easiest way to do that is using

    &outerClass
    &parentClass
    &innerClass
    &parentRowTpl
    

    In your Wayfinder call.

    It should look like this:

    [[Wayfinder? &startId=`[(site_start)]` &level=`2` &outerClass=`nav navbar-nav` &parentClass=`dropdown` &innerClass=`dropdown-menu` &parentRowTpl=`navbar_parentRowTpl`]]
    

    Note: If you don't use [(site_start)] in your context(s), replace it with your menu's parent resource ID.

    Also in this case you would have to create the navbar_parentRowTpl. This chunk should look like this:

    <li[+wf.id+][+wf.classes+] class="dropdown" id="menu[+id+]">
    <a class="dropdown-toggle" data-toggle="dropdown" data-target="#menu[+id+]" href="[+wf.link+]" title="[+wf.title+]">
        [+wf.linktext+]
        <b class="caret"></b>
    </a>
    [+wf.wrapper+]</li>
    

    As it's been a long time I don't work with Evo, if there is some problem with this code let me know and I can help you.

    I used this example as reference: https://gist.github.com/mkay/f0afc97ec1536932e0a3

    And used this table to convert to the Evo syntax:

    https://rtfm.modx.com/revolution/2.x/making-sites-with-modx/tag-syntax