Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Building a multilevel Navigation
#11
Alexey Wrote:I have same problem!
Slug is empt
Anybody have a decision?

I patched theme_function.php (/admin/inc/) to make my multilevel-navigation work.
I give no guarantee this won't make any problems elsewhere:
Code:
starting from line Line 203
                    if ($PRETTYURLS == '1') {
                        if ($parent != '') {$parent = tsl($parent); }
                        if ($slug == 'index' ) { $slugs = ''; } else { $slugs = $slug; }
                        $url = $SITEURL . @$parent . $slugs;
                    } else {
                        if ($slug == 'index' ) { $slugs = ''; } else { $slugs = '?id='.$slug; }
                        $url = $SITEURL .'index.php'.$slugs;
                    }
                    
                    $specific = array("slug"=>$slug,"url"=>$url,"parent_slug"=>$parent,"title"=>$title,"menu_priority"=>$pri,"menu_text"=>$text,"menu_status"=>$menuStatus,"private"=>$private);

my multilevelnavi has changed completely:
Code:
<ul id="navigation">
    <?php
        $navdata        = menu_data();            // I managed only to get all menu data by passing a not existing slug
        $current_slug    = return_page_slug();   // slug of current page
        $parent_slug    = $current_slug."/";    // set default parent - the current page
  
        // if user is already on a subpage - find parent-slug
        foreach ($navdata as $navpoint) {
            // if in a sublever-page - search the current in array - set parent
            if( ($navpoint['slug']==$current_slug) AND ($navpoint['parent_slug'] != '')) {
                $parent_slug = $navpoint['parent_slug'];
                break;
            }
        }
        
        function hasSublevel($parentSlug, $nd) {
            foreach ($nd as $navpoint) {
                if($navpoint['parent_slug']==$parentSlug) {
                    return true;
                }
            }
            return false;
        }
        
        function isParentOfActive($slug, $nd) {
            $current_slug    = return_page_slug();
            foreach ($nd as $navpoint) {
                if(($navpoint['slug']==$current_slug) AND ($navpoint['parent_slug'] == $slug)) {
                    return true;
                }
            }
            return false;
        }
        
        function printSublevel($parentSlug, $nd) {
            $current_slug    = return_page_slug();
            foreach ($nd as $navpoint) {
                if($navpoint['parent_slug']==$parentSlug) {
                    // found a subpage of this parent
                    $classnames = $navpoint['slug'];
                    if($navpoint['slug'] == $current_slug) {
                        // found current page !!
                        $classnames .= " current";
                    }
                    echo '<li class="'.$classnames.'">';
                    echo '<a href="'.$navpoint['url'].'">'.$navpoint['menu_text'].'</a>';
                    echo '</li>';
                }
            }
        }
        
        foreach ($navdata as $navpoint) {
            if($navpoint['parent_slug'] == '') {
                // first level Navpoints
                
                $classnames = $navpoint['slug'];
                if(($navpoint['slug'] == $current_slug) or isParentOfActive($navpoint['slug'], $navdata)) {
                    // found current page !!
                    $classnames .= " current";
                }
                
                echo '<li class="'.$classnames.'">';
                echo '<a href="'.$navpoint['url'].'">'.$navpoint['menu_text'].'</a>';
                // now check for subcategories
                if( (($navpoint['slug'].'/' == $parent_slug) AND hasSublevel($navpoint['slug'], $navdata)) OR isParentOfActive($navpoint['slug'], $navdata) ) {
                    echo '<ul class="lvl_2">';
                    printSublevel($navpoint['slug'], $navdata);
                    echo '</ul>';
                }
                echo '</li>';
            }
        }
    ?>
</ul>

Now this shows the subcategories even if you are IN the subcategory
It highlights the current subcategory and the parent category.
It's working only for 2 levels (root and one sublevel)

Once again I can not guarantee this will work under al circumstances.
It's a bit quick'n dirty I know - needed to finish this. If anyone has ideas how to improve this - let me know.


Stil
*******************
http://blog.projekt2k.de
*******************
Reply


Messages In This Thread
Building a multilevel Navigation - by StilgarBF - 2009-08-27, 17:28:13
Building a multilevel Navigation - by StilgarBF - 2009-08-27, 22:34:10
Building a multilevel Navigation - by yxcvbnm - 2009-08-28, 07:11:47
Building a multilevel Navigation - by ccagle8 - 2009-08-28, 10:46:26
Building a multilevel Navigation - by ccagle8 - 2009-09-27, 03:35:11
Building a multilevel Navigation - by andymci - 2009-10-19, 02:38:13
Building a multilevel Navigation - by StilgarBF - 2009-10-19, 22:51:30
Building a multilevel Navigation - by wizzy - 2009-10-20, 02:08:00
Building a multilevel Navigation - by Alexey - 2009-10-22, 17:59:29
Building a multilevel Navigation - by StilgarBF - 2009-10-22, 20:56:03
Building a multilevel Navigation - by Alexey - 2009-10-22, 22:14:44
Building a multilevel Navigation - by n00dles101 - 2009-10-22, 22:56:21
Building a multilevel Navigation - by StilgarBF - 2009-10-22, 23:21:53
Building a multilevel Navigation - by Patricia - 2009-11-01, 20:16:13
Building a multilevel Navigation - by n00dles101 - 2009-11-07, 06:01:21
Building a multilevel Navigation - by Patricia - 2009-11-07, 19:12:44
Building a multilevel Navigation - by yxcvbnm - 2009-11-07, 20:41:04
Building a multilevel Navigation - by homershines - 2009-11-10, 15:36:19
Building a multilevel Navigation - by Texta - 2009-11-13, 01:46:59
Building a multilevel Navigation - by Texta - 2009-11-17, 04:11:31



Users browsing this thread: 1 Guest(s)