Soma Posted November 21, 2017 Author Share Posted November 21, 2017 Hook to MarkupSimpleNavigation::getTagString to alter the item: Little more in the docs on the hook to alter the output of an item: https://github.com/somatonic/MarkupSimpleNavigation#hook-for-custom-item-string-new-in-120 If your top level pages use their own template you could easily use "xtemplates" options to render the items differently using the template you specify there. Link to comment Share on other sites More sharing options...
Soma Posted November 22, 2017 Author Share Posted November 22, 2017 No theres nothing short except the xtemplates option. Link to comment Share on other sites More sharing options...
maxf5 Posted November 28, 2017 Share Posted November 28, 2017 Hey guys, i want to limit the children of a page (id:1101) to 3 children. Can somebody help me with the hook? selector_level2" => "limit=3" <- this would do it for all parents.. best regards Link to comment Share on other sites More sharing options...
Soma Posted November 28, 2017 Author Share Posted November 28, 2017 31 minutes ago, maxf5 said: Hey guys, i want to limit the children of a page (id:1101) to 3 children. Can somebody help me with the hook? selector_level2" => "limit=3" <- this would do it for all parents.. best regards I'm not sure this needs a hook or even possible with one. You could use the 'selector_field' => 'nav_selector', // string (default 'nav_selector') define custom PW selector by using a property or field on a page. Use this setting if you want to overwrite the default nav_selector to use a field or a property (can be runtime) to define the selector. See docs: https://github.com/somatonic/MarkupSimpleNavigation#added-support-for-nav_selector-propertyfield-and-selector_leveln-new-in-121 Link to comment Share on other sites More sharing options...
maxf5 Posted November 28, 2017 Share Posted November 28, 2017 Hey @Soma thank you. I already know that solution and i am using it for the website, 'selector' => 'navhide!=1', (it's a checkbox) I wanted to get something dynamic when a new children is added. The parent is the news-listing and the children are the news; you get the point. I can live with that workaround for the moment Link to comment Share on other sites More sharing options...
Soma Posted November 28, 2017 Author Share Posted November 28, 2017 What do you mean? It's not the "selector" option it's the "selector_field" option, where you can define selectors dynamicly, and it's not a workaround but especially for cases like this. Link to comment Share on other sites More sharing options...
gregory Posted December 15, 2017 Share Posted December 15, 2017 Hi guys, is it possible to set a menu item that points to an external url? Thank you Link to comment Share on other sites More sharing options...
Soma Posted December 15, 2017 Author Share Posted December 15, 2017 1 hour ago, gregory said: Hi guys, is it possible to set a menu item that points to an external url? Thank you You can add any field you like for the url in the item tpl. ie: "<a href='{external_url|url}'>{title}</a>" Create a page with an URL field "external_url". Link to comment Share on other sites More sharing options...
Soma Posted December 19, 2017 Author Share Posted December 19, 2017 So I finally pushed the large children branch performance fix and upped version to 1.3.5. Thanks for being patient. 1 Link to comment Share on other sites More sharing options...
gmclelland Posted December 19, 2017 Share Posted December 19, 2017 (edited) Hi @Soma, When I try to upgrade to the newest version of the module using https://github.com/ryancramerdesign/ProcessWireUpgrade, I get the following message for some reason. Session: Invalid download URL specified I've tried on several sites. Not sure what is wrong? Edited December 19, 2017 by gmclelland 1 Link to comment Share on other sites More sharing options...
Soma Posted December 19, 2017 Author Share Posted December 19, 2017 41 minutes ago, gmclelland said: Hi @Soma, When I try to upgrade to the newest version of the module using https://github.com/ryancramerdesign/ProcessWireUpgrade, I get the following message for some reason. Session: Invalid download URL specified I've tried on several sites. Not sure what is wrong? Thanks for the note. I'm not sure, looks like while editing the module entry the download url got fu. There was just a number. I corrected that and it seems to work again? Not sure how the download url field can be a number only and if you clicked download on the module page you got to page not found... 1 Link to comment Share on other sites More sharing options...
gmclelland Posted December 19, 2017 Share Posted December 19, 2017 works now, thank you Link to comment Share on other sites More sharing options...
anyway Posted January 17, 2018 Share Posted January 17, 2018 Hi guys, I'm currently building a dropdown navigation to map the page tree, what schematically looks like this: |-- Link+-- Parent |-- Child |-- Child +-- Parent |-- Child |-- Child +-- Parent |-- Child |-- Child Is it possible to repeat the triggering link of the drop-downs (which should not link to the parent page) inside the dropdowns? The parent link for each submenu should appear again at the top of each submenu. |-- Link+-- Parent (Trigger) |-- Parent |-- Child |-- Child +-- Parent (Trigger) |-- Parent |-- Child |-- Child +-- Parent (Trigger) |-- Parent |-- Child |-- Child It would be great if this could be solved with MarkupSimpleNavigation? Thank you! Link to comment Share on other sites More sharing options...
anyway Posted January 20, 2018 Share Posted January 20, 2018 Hi, I have a tree with 3 sublevels and I'm trying to build a sidebar navigation that shows the children when there are children and the siblings when there are no children. The code below doesn't seem to work for me.... the output is alway the complete tree, on every page. <?php //sideBarMenuNav change items to view if($page->hasChildren) { //we are on a first level parent page so show sencond level $entries = $page->children; } else { //we are on second level so show siblings to actual page $entries = $page->siblings; }; $sideBarMenu = $modules->get("MarkupSimpleNavigation"); $options = array( 'current_class' => 'current-menu-item', 'has_children_class' => 'has_children', 'max_levels' => 2, 'collapsed' => false, 'show_root' => true, 'outer_tpl' => '<ul class="menu vertical sidebar_menu">||</ul>', 'inner_tpl' => '<ul class="menu vertical nested">||</ul>', 'item_tpl' => '<a href="{url}">{title}</a>', 'item_current_tpl' => '<a href="{url}">{title}</a>', ); echo $sideBarMenu->render($options, null, $entries ); It is the approach of mr-fan, from here: What's wrong with my code? The contents of the variable "entries" are correct, for each page level. Thanks! Link to comment Share on other sites More sharing options...
Soma Posted January 22, 2018 Author Share Posted January 22, 2018 On 17.1.2018 at 10:59 AM, anyway said: Hi guys, I'm currently building a dropdown navigation to map the page tree, what schematically looks like this: |-- Link+-- Parent |-- Child |-- Child +-- Parent |-- Child |-- Child +-- Parent |-- Child |-- Child Is it possible to repeat the triggering link of the drop-downs (which should not link to the parent page) inside the dropdowns? The parent link for each submenu should appear again at the top of each submenu. |-- Link+-- Parent (Trigger) |-- Parent |-- Child |-- Child +-- Parent (Trigger) |-- Parent |-- Child |-- Child +-- Parent (Trigger) |-- Parent |-- Child |-- Child It would be great if this could be solved with MarkupSimpleNavigation? Thank you! There's no option for this. There's some jquery code I posted to do this client side. https://processwire.com/talk/topic/1036-markupsimplenavigation/?page=22&tab=comments#comment-139794 Link to comment Share on other sites More sharing options...
Soma Posted January 22, 2018 Author Share Posted January 22, 2018 On 20.1.2018 at 8:36 AM, anyway said: Hi, I have a tree with 3 sublevels and I'm trying to build a sidebar navigation that shows the children when there are children and the siblings when there are no children. The code below doesn't seem to work for me.... the output is alway the complete tree, on every page. <?php //sideBarMenuNav change items to view if($page->hasChildren) { //we are on a first level parent page so show sencond level $entries = $page->children; } else { //we are on second level so show siblings to actual page $entries = $page->siblings; }; $sideBarMenu = $modules->get("MarkupSimpleNavigation"); $options = array( 'current_class' => 'current-menu-item', 'has_children_class' => 'has_children', 'max_levels' => 2, 'collapsed' => false, 'show_root' => true, 'outer_tpl' => '<ul class="menu vertical sidebar_menu">||</ul>', 'inner_tpl' => '<ul class="menu vertical nested">||</ul>', 'item_tpl' => '<a href="{url}">{title}</a>', 'item_current_tpl' => '<a href="{url}">{title}</a>', ); echo $sideBarMenu->render($options, null, $entries ); It is the approach of mr-fan, from here: What's wrong with my code? The contents of the variable "entries" are correct, for each page level. Thanks! I don't think you want to have 'show_root' => true, There's no root to show if you add a $entries PageArray. It's only for if you add 1 root page to the navigation options Link to comment Share on other sites More sharing options...
anyway Posted January 22, 2018 Share Posted January 22, 2018 Thanks a lot for the hints, Soma! Everything works now as expected. I misunderstood the concept of' show_root' => true, Link to comment Share on other sites More sharing options...
barneyy Posted March 1, 2018 Share Posted March 1, 2018 Hi, sorry to tell that i'm new to pw and my php-skills are low - i try to get a bootstrap 4 navbar working with MSN, and with this Code <?php $nav = $modules->get('MarkupSimpleNavigation'); $options = array( 'has_children_class' => 'dropdown', 'list_tpl' => '<li%s>||</li>', 'current_class' => 'active', 'list_field_class' => 'nav-item', 'max_levels' => 2, 'item_tpl' => '<a class="nav-link gek-anim" href="{url}">{title}</a>', 'outer_tpl' => '<ul class="navbar-nav ml-auto">||</ul>', 'inner_tpl' => '<div class="dropdown-menu"><ul>||</ul></div>', 'item_current_tpl' => '<a class="nav-link active" href="{url}">{title}</a>', ); echo $nav->render($options); i'm getting this output: <ul class="navbar-nav ml-auto"> <li class="dropdown nav-item"><a class="nav-link gek-anim" href="/pw/tester/about/">About</a> <div class="dropdown-menu"> <ul> <li class="nav-item"><a class="nav-link gek-anim" href="/pw/tester/about/what/">Child page example 1</a></li> <li class="nav-item"><a class="nav-link gek-anim" href="/pw/tester/about/background/">Child page example 2</a></li> </ul> </div> </li> <li class="nav-item"><a class="nav-link gek-anim" href="/pw/tester/site-map/">Site Map</a></li> <li class="active nav-item"><a class="nav-link active" href="/pw/tester/hermens/">hermens</a></li> </ul> My question ist now: How can i get the following code in the dropdown?!: <div class="dropdown-menu"> <a class="nav-link gek-anim" href="/pw/tester/about/what/">Child page example 1</a> <a class="nav-link gek-anim" href="/pw/tester/about/background/">Child page example 2</a> </div> So there shoudn't be the <ul>-tag and the <li>-tags in the dropdown, because bootstrap4 only uses <a>-tags in dropdowns?! Do i need something from these options?! 'xtemplates' => '', // specify one or more templates separated with a pipe | to use the xitem_tpl and xitem_current_tpl markup 'xitem_tpl' => '<a href="{url}">{title}</a>', // same as 'item_tpl' but for xtemplates pages, can be used to define placeholders Thanks in advance Link to comment Share on other sites More sharing options...
Soma Posted March 2, 2018 Author Share Posted March 2, 2018 Maybe remove the <ul></ul> from your options "inner_tpl" code then? Link to comment Share on other sites More sharing options...
barneyy Posted March 5, 2018 Share Posted March 5, 2018 @Soma thanks for your helping advice, but when i delete the ul-tags in the "inner-tpl" code there's nothing in the <div class="dropdown--menu"> - here's the output <ul class="navbar-nav ml-auto"> <li class="dropdown nav-item"><a class="nav-link gek-anim" href="/pw/tester/about/">About</a> <!-- [Selector Level1: ] --> <div class="dropdown-menu"></div> </li> <li class="nav-item"><a class="nav-link gek-anim" href="/pw/tester/about/what/">Child page example 1</a> <!-- [Selector Level2: ] --> </li> <li class="nav-item"><a class="nav-link gek-anim" href="/pw/tester/about/background/">Child page example 2</a> <!-- [Selector Level2: ] --> </li> <li class="nav-item"><a class="nav-link gek-anim" href="/pw/tester/site-map/">Site Map</a> <!-- [Selector Level1: ] --> </li> <li class="active nav-item"><a class="nav-link active" href="/pw/tester/hermens/">hermens</a> <!-- [Selector Level1: ] --> </li> </ul> this is my call from MSN: <?php $nav = $modules->get('MarkupSimpleNavigation'); $options = array( 'has_children_class' => 'dropdown', 'list_tpl' => '<li%s>||</li>', 'current_class' => 'active', 'list_field_class' => 'nav-item', 'max_levels' => 2, 'item_tpl' => '<a class="nav-link gek-anim" href="{url}">{title}</a>', 'outer_tpl' => '<ul class="navbar-nav ml-auto">||</ul>', 'inner_tpl' => '<div class="dropdown-menu"></div>', 'item_current_tpl' => '<a class="nav-link active" href="{url}">{title}</a>', 'debug' => true, ); echo $nav->render($options); if i insert two pipes into the 'inner_tpl' => '<div class="dropdown-menu"></div>' same result - no content in the <div class="dropdown-menu"></div>! There must be something i don't understand! Link to comment Share on other sites More sharing options...
Soma Posted March 5, 2018 Author Share Posted March 5, 2018 You don't want to remove the || placeholder used to render the entries. Edit: Ah I see, there's a problem of <li>'s inside a <div> within a UL isn't valid HTML and Browsers moves them out of the <div>. Unfortunately there's not way to render such a thing in MSN. Bootstrap is really strange... why can't they just have normal nested UL's... 2 Link to comment Share on other sites More sharing options...
barneyy Posted March 5, 2018 Share Posted March 5, 2018 Hi Soma, i'm really tired and glad the you're with me! But there are no <li> inside a a <div>, there are only <a>-tags.... <div class="dropdown-menu"> <a class="nav-link gek-anim" href="/pw/tester/about/what/">Child page example 1</a> <a class="nav-link gek-anim" href="/pw/tester/about/background/">Child page example 2</a> </div> if i make pipes into the 'inner_tpl' => '<div class="dropdown-menu">||</div> i get the same result. I think i try to use a non-bootstrap-navbar - but it must be possible to make a bootstrap-navbar in PW - heading forward - and good night & good luck - and thanks for your patience.... Link to comment Share on other sites More sharing options...
kongondo Posted March 5, 2018 Share Posted March 5, 2018 13 minutes ago, barneyy said: I think i try to use a non-bootstrap-navbar - but it must be possible to make a bootstrap-navbar in PW - heading forward .... Yes, it is possible, either using MSN, your own recursive function (there's loads in the forum), or using Menu Builder. Could you point us to a link with example code? The ones I have seen have <ul> as well as the <div>. You seem to be saying that the <ul> is not required? If you are still stuck and wish to try something else, I can guide you how to build the menu using Menu Builder . 1 Link to comment Share on other sites More sharing options...
barneyy Posted March 6, 2018 Share Posted March 6, 2018 @kongondo at first many thanks for your support-offer - i'll be back in my office on thursday and will try to get my bootstrap4-navbar with your MenuBuilder. Had a quick look at the option-array from MenuBuilder and i think i'll give it a try (or a few more ;-) ). I'm absolutly new to PW so i need to be patiently.... thanks in advance and i'll be back on thursday..... Link to comment Share on other sites More sharing options...
Soma Posted March 6, 2018 Author Share Posted March 6, 2018 13 hours ago, barneyy said: Hi Soma, i'm really tired and glad the you're with me! But there are no <li> inside a a <div>, there are only <a>-tags.... <div class="dropdown-menu"> <a class="nav-link gek-anim" href="/pw/tester/about/what/">Child page example 1</a> <a class="nav-link gek-anim" href="/pw/tester/about/background/">Child page example 2</a> </div> if i make pipes into the 'inner_tpl' => '<div class="dropdown-menu">||</div> i get the same result. I think i try to use a non-bootstrap-navbar - but it must be possible to make a bootstrap-navbar in PW - heading forward - and good night & good luck - and thanks for your patience.... I meant there is in the example if you remove the <ul> from the options, it would results in <ul><div><li>...</li></div></ul>, not saying bootstrap has. I tried with a special hook to remove the <li>' on the level greater than 1. Does that work for you? $nav = $modules->get('MarkupSimpleNavigation'); $options = array( 'has_children_class' => 'dropdown', 'list_tpl' => '<li%s>||</li>', 'current_class' => 'active', 'list_field_class' => 'nav-item', 'max_levels' => 2, 'item_tpl' => '<a class="nav-link gek-anim" href="{url}">{title}</a>', 'outer_tpl' => '<ul class="navbar-nav ml-auto">||</ul>', 'inner_tpl' => '<div class="dropdown-menu">||</div>', 'item_current_tpl' => '<a class="nav-link active" href="{url}">{title}</a>', ); $nav->addHookBefore("getListString", null, function($event){ $msn = $event->object; if($msn->iteration > 1){ // on level 2 and greater $msn->list_tpl = array("",""); } else { $msn->list_tpl = array("<li%s>","</li>"); } }); $sidebar .= $nav->render($options); 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now