bbeer Posted July 10, 2013 Share Posted July 10, 2013 That problem seems to be solved, don't ask why but it works now. Link to comment Share on other sites More sharing options...
dragan Posted July 12, 2013 Share Posted July 12, 2013 Sorry for replying back so late, but it's been a hectic (and hot) week... I guess the reason it didn't work, was simply because some pages didn't have the correct / updated template .php assigned, and thus missing a newer include file. Mea culpa! Thou shalt not multitask, unless you are a machine. <slighlty off-topic> Seriously now - I really believe multitasking should be left to computers, not humans. I guess I was trying to build / fix / update too many things at once. And as is always the case in such situtations, small (but important) details get easily overlooked. </slighlty off-topic> Link to comment Share on other sites More sharing options...
nfil Posted July 17, 2013 Share Posted July 17, 2013 Hi, I'am testing your module with this menu http://voky.com.ua/demo/pcss3mm/ I have this to load the module and test the different module arrays: <?php $treeMenu = $modules->get("MarkupSimpleNavigation"); // load the module $options = array( 'parent_class' => 'parent', 'current_class' => 'current', 'has_children_class' => 'has_children', 'levels' => true, 'levels_prefix' => '||', 'max_levels' => 2, 'firstlast' => false, 'collapsed' => false, 'show_root' => false, 'selector' => '', 'outer_tpl' => '<ul id="pcss3mm" class="pcss3mm">||</ul>', 'inner_tpl' => '||', 'list_tpl' => '<li>||</li>', 'list_field_class' => '', 'item_tpl' => '<a href="{url}" title="{title}">{title}</a>', 'item_current_tpl' => '<a href="{url}" title="{title}" >{title}</a>', 'xtemplates' => '', 'xitem_tpl' => '<span>{title}</span>', 'xitem_current_tpl' => '<span>{title}</span>' ); echo $treeMenu->render($options); ?> I'am trying to get all the pages on my pWire admin (excluding the home page) and show a dropdown menu for the parents page, yet I'am getting the child pages in the root menu front side page menu. How can I display the child page on the drop down menu? I tested <li class="dropdown"> yet I'am probably doing something wrong on the module arrays? <li class="dropdown"> <a href="#"><i class="icon-briefcase"></i>Portfolio</a><b></b> <div class="grid-container3"> <ul> <li><a href="#"><i class="icon-lemon"></i>Logos</a></li> <li><a href="#"><i class="icon-globe"></i>Websites</a></li> <li><a href="#"><i class="icon-th-large"></i>Branding</a></li> <li><a href="#"><i class="icon-picture"></i>Illustrations</a></li> </ul> </div> </li> Thanks in advance. Link to comment Share on other sites More sharing options...
Soma Posted July 17, 2013 Author Share Posted July 17, 2013 I think this would translate to something like this only setting what would be non-default: $treeMenu = $modules->get("MarkupSimpleNavigation"); // load the module $options = array( 'has_children_class' => 'dropdown', 'max_levels' => 2, 'outer_tpl' => '<ul id="pcss3mm" class="pcss3mm">||</ul>', 'inner_tpl' => '<div class="grid-container3"><ul>||</ul></div>', 'item_tpl' => '<a href="{url}" title="{title}">{title}</a>', 'item_current_tpl' => '<a href="{url}" title="{title}" >{title}</a>' ); echo $treeMenu->render($options); 1 Link to comment Share on other sites More sharing options...
nfil Posted July 17, 2013 Share Posted July 17, 2013 Thanks Soma. You did it again, I was missing the logic of the array has_children_class I test a few settings but I started the wrong way because of that array.Now I understand the logic of your great module to render the pWire pages into a navigation menu.I hope I finish my first pWire project in a few weeks and post it here in the noob/sites section.Thanks again Soma for the great support and work to enhance pWire features! Link to comment Share on other sites More sharing options...
dragan Posted July 29, 2013 Share Posted July 29, 2013 How difficult would it be to create a module version that supports the new 2.3.2 multilang features? i.e. if I use the Language Support Page Names module, Lang-Fields + URL-segments. exactly as described here: http://processwire.com/api/multi-language-support/multi-language-urls/ Creating mulitlang-links with the API is now a breeze: $userLang = ''; if(!$user->language->isDefault()) $userLang = $user->language->name; $myURL = $pages->get(foo)->url . $userLang; // append language code Would I simply have to change something here ? (lines 267 of your module): // if page object from a page field get its url else if($f instanceof Page){ $field_value = $f->url; Maybe adding an optional parameter like "multilangAware"? Link to comment Share on other sites More sharing options...
Soma Posted July 29, 2013 Author Share Posted July 29, 2013 This module already work with LanguageSupportPageNames module and is multi language aware, it's no any different than if you would create your own with $page->url. With PW multi language support you don't need anything different than without. Link to comment Share on other sites More sharing options...
dragan Posted July 29, 2013 Share Posted July 29, 2013 Well, here, it does show correct page-titles, but it omits the last URL-segment, and so it always jumps back to the default URL :-| btw: I installed a fresh new 2.3.2 with MSN module, and it does the same. languages are setup, all text-fields are multilang, all templates have URL-segments enabled, and in the header there's something like if($input->urlSegment1 == 'de') $user->language = $languages->get('de'); if($input->urlSegment1 == 'fr') $user->language = $languages->get('fr'); if(!$input->urlSegment1) $user->language = $languages->get('default'); // english Link to comment Share on other sites More sharing options...
Soma Posted July 29, 2013 Author Share Posted July 29, 2013 The LanguageSupportPageNames doesn't have url segments at the end but at the start. I don't plan to support any other unusual url segment construction with this module. Link to comment Share on other sites More sharing options...
Soma Posted July 29, 2013 Author Share Posted July 29, 2013 Means not it's not possible with adding language segment to url via item templates, I don't see any problem anyway. $lang = "de"; 'item_tpl' => "<a href='/{url}$lang'>{title}</a>"; Link to comment Share on other sites More sharing options...
dragan Posted July 29, 2013 Share Posted July 29, 2013 Excellent! That worked like a charm. Thank you. Link to comment Share on other sites More sharing options...
Soma Posted August 17, 2013 Author Share Posted August 17, 2013 Here I did an example for creating a Boostrap 2.3.2 Multilevel Navbar with MarkupSimpleNavigation https://gist.github.com/somatonic/6258081 I use hooks to manipulate certain attributes and classes to li's and anchors. If you understand the concept you can do a lot with these tools. 3 Link to comment Share on other sites More sharing options...
Soma Posted August 19, 2013 Author Share Posted August 19, 2013 As I wrote the example is for Bootstrap 2.3.2. I have no idea what BS 3.0 needs... but I'm lucky I don't use Bootstrap because it's annoying 1 Link to comment Share on other sites More sharing options...
Soma Posted August 19, 2013 Author Share Posted August 19, 2013 Well apart from I don't know "what does not work" ... as I can't see your screen from here... Looks like you don't render the menu from the root level, although you don't give another root page to the nav render, so makes no sense to me. <li class="dropdown"><a href="/corpetrol/programas-tecnicos/">Programas Técnicos</a> This should be the first level dropdown, and it's missing the class and data attribute, but the URL is showing it's not a root page but a second level page already. So the hooks check for the level and since you seem to be on another level you'd have to change that to fit you structure. Those are the count($item->parents) if($item->numChildren(true) && count($item->parents) < 2){ ... } // only on level 1 I guess you have to adapt those. Link to comment Share on other sites More sharing options...
Soma Posted August 19, 2013 Author Share Posted August 19, 2013 Ah subdirectory... but then it should work as is. Do you have the latest version of the module? Link to comment Share on other sites More sharing options...
Soma Posted August 19, 2013 Author Share Posted August 19, 2013 Ah, now I see there's a change in my local MarkupSimpleNavigation module I did and haven't committed. So when using my code exmple with 1.1.9 it throws this error: Error: Exception: Method MarkupSimpleNavigation::___getItemString() does not exist (in /Applications/XAMPP/xamppfiles/htdocs/pw2-dev/wire/core/HookEvent.php line 153)#0 /Applications/XAMPP/xamppfiles/htdocs/pw2-dev/wire/core/HookEvent.php(153): ReflectionMethod->__construct(Object(MarkupSimpleNavigation), '___getItemStrin...') THere's a hook function I added which doesn't exist in current latest version, so it doesn't work. If you'd told me the error it would've been easy... I updated my code example and will delete your code to keep this thread cleaner. Link to comment Share on other sites More sharing options...
Soma Posted August 19, 2013 Author Share Posted August 19, 2013 Edit: just updated the module to 1.2.0 to commit addition I've done regarding the hook I've used in the original example. Now the MarkupSimpleNavigation::getItemString() exists if you update to the latest version and can be used instead of getTagsString(). I know it sound strange but I didn't like the function name for the hook and didn't want to break backward compatibility that's why I added an additional function that suits better. 1 Link to comment Share on other sites More sharing options...
dragan Posted August 28, 2013 Share Posted August 28, 2013 Not sure if this is the right right thread to post this question, or if it rather belongs in a "selector" thread. Is it generally possible to nest selectors? With MarkupSimpleNavigation, I'd like to use a selector only for a certain template, e.g. if template == 'product' -> use selector 'hide_fr<1' In other words, not show links where the checkbox "hide_fr" is selected. I know I could use the multilang settings tab "active" - but the problem is, sometimes there are products (pages) that are supposed to also be hidden for the default language - and that one is always active (of course). Any ideas how I could solve this? I know I know, another very unusual / "exotic" situation - but sadly, some clients tend to change specs several times a day Link to comment Share on other sites More sharing options...
Soma Posted August 28, 2013 Author Share Posted August 28, 2013 I'm not sure I understand fully what you saying. No you can not nest selectors, what ever that would mean exactly. To hide pages with "hide_fr" checked you would simply use "selector" => "hide_fr=''", Also I'm not sure why you can't simply use "active" option, If the default language should not be shown you would simply hide the page or unpublish it. Link to comment Share on other sites More sharing options...
dragan Posted August 28, 2013 Share Posted August 28, 2013 Well, with a multilang setup, you can either hide / publish the entire page altogether (for all languages) - there's no "hidden" / "unpublished" checkbox per language - there's only the "active" checkbox for all alternative languages under "settings". "selector" => "hide_de < 1", unfortunately doesn't work - tried it. Problem is, only one particular template is using these checkboxes. If I use that selector with MUSN, nothing gets rendered at all. I use MUSN "globally" for the main left navigation (3 levels down, various templates). That's what I meant with "nested selector arguments": "only apply this selector, when we traverse through pages with template 'product'", if that makes sense... (in a strictly MUSN context). I guess I'll try an approach with the 'xtemplates' option, add some custom CSS and hopefully being able to visually hide the unwanted items in the rendered nav. Link to comment Share on other sites More sharing options...
Soma Posted August 28, 2013 Author Share Posted August 28, 2013 I have had changed my example to "selector" => "hide_fr=''", Works fine. Link to comment Share on other sites More sharing options...
dragan Posted August 29, 2013 Share Posted August 29, 2013 Oh, didn't notice it. Changed it here as well, and indeed - now it works. Thanks! Link to comment Share on other sites More sharing options...
peterfoeng Posted September 14, 2013 Share Posted September 14, 2013 Hi guys, I have two questions regarding this module to see if it is possible to: output something like (basically 2 level navigation but with custom parent output): <div> {$page->title}</h3> <ul> <li>Sub item 1</li> <li>Sub item 2</li> <li>Sub item 3</li> </ul> <div> <div> {$page->title}</h3> <ul> <li>Sub item 1</li> <li>Sub item 2</li> <li>Sub item 3</li> </ul> <div> etc also can we output custom class based on the position of the menu item? Say I want every second item in the list (item 2, item 4, and so on) to have a class 'second-item-position' <ul> <li>item 1</li> <li class="even">item 2</li> <li>item 3</li> <li class="even">item 4</li> </ul> This is my first post and thanks Soma for this beautiful module - as I am building my first PW site so I am still not that familiar with the API but the community here is fantastic and I am looking forward to post my first studycase using PW Link to comment Share on other sites More sharing options...
vxda Posted September 15, 2013 Share Posted September 15, 2013 Hi, can i exclude showing children for parent with id="x" ? ? ( hide children for parent->id('1022')) i got my menu and in it is News page i dont want to show children on hover. Ty. Link to comment Share on other sites More sharing options...
Soma Posted September 15, 2013 Author Share Posted September 15, 2013 Welcome @peterofeng I'm not sure I understand <div> {$page->title}</h3> <ul> <li>Sub item 1</li> <li>Sub item 2</li> <li>Sub item 3</li> </ul> <div> <div> {$page->title}</h3> <ul> <li>Sub item 1</li> <li>Sub item 2</li> <li>Sub item 3</li> </ul> <div> This isn't a 2 level navigation. And the UL you could generate with the module but just for a simple navigation like this you could make it with your own simple foreach code. <ul> <li>item 1</li> <li class="even">item 2</li> <li>item 3</li> <li class="even">item 4</li> </ul> Same with this. It isn't supported by the module, but you could simply use css nth-child(odd) or jQuery to produce this. Hi, can i exclude showing children for parent with id="x" ? ? ( hide children for parent->id('1022')) i got my menu and in it is News page i dont want to show children on hover. Ty. Not exactly sure, but you could try: 'selector' => 'parent!=1022|1002' 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