Php 如何使子MNEU URL遵循树层次结构

Php 如何使子MNEU URL遵循树层次结构,php,Php,我在我的网站上有一个自定义菜单,我想让URL遵循树的层次结构 目前发生的情况: 这应该是输出 这意味着menu-5是menu-2的子菜单。它已经添加到数据库中 /* Recursive Admin Menu */ function recursive_list_pages( $array = array(), $content_parent = 0 ){ if( !empty($array[$content_parent]) ){ /* Con

我在我的网站上有一个自定义菜单,我想让URL遵循树的层次结构

目前发生的情况:

这应该是输出

这意味着menu-5是menu-2的子菜单。它已经添加到数据库中

/* Recursive Admin Menu */
    function recursive_list_pages( $array = array(), $content_parent = 0 ){

        if( !empty($array[$content_parent]) ){

            /* Conditional to check if the module is parent and addClass to its ul */
            $addClass = '';
            if( $content_parent == 0 ){
                $addClass = 'class="menu menu-level-' . $content_parent . '"';
            } else if( $content_parent > 0 ){
                $addClass = 'class="submenu menu-level-' . $content_parent . '"';
            }

            echo '<ul ' . $addClass . '>';
            foreach( $array[$content_parent] as $items ){

            /* Conditional to check if the module is parent and addClass, attr to its li */
            $addClassli = '';
            if( $content_parent == 0 ){
                $addClassli = 'class="menu-item menu-item-' . $items["content_id"] . '"';
            } else if( $content_parent > 0 ){
                $addClassli = 'class="submenu-item submenu-item-' . $items["content_id"] . '"';
            }

                echo '<li ' . $addClassli . '>';
                    echo '<a href="' . SITE_URL . '' . $items["content_slug"] . '">';
                    echo $items["content_title"];
                    echo '</a>';
                    recursive_list_pages( $array, $items["content_id"] );
                echo '</li>';

            }
            echo '</ul>';
        }
    }



/* Get Menu from Database */
    function list_pages(){
        global $db;
        $sql = "SELECT * FROM hpl_content WHERE content_type='pages' ORDER BY content_sort ASC";
        $query = $db->SELECT($sql);
        $array = array();
        if( $db->NUM_ROWS() > 0 ){
            $rows = $db->FETCH_ARRAY();
            foreach( $rows as $row ){ $array[$row["content_parent"]][] = $row; }
            recursive_list_pages( $array );
        }
    }
请帮助。

尝试以下方法:

/* Recursive Admin Menu */
function recursive_list_pages( $array = array(), $content_parent = 0,$parent_slug = null){

    if( !empty($array[$content_parent]) ){

        /* Conditional to check if the module is parent and addClass to its ul */
        $addClass = '';
        if( $content_parent == 0 ){
            $addClass = 'class="menu menu-level-' . $content_parent . '"';
        } else if( $content_parent > 0 ){
            $addClass = 'class="submenu menu-level-' . $content_parent . '"';
        }

        echo '<ul ' . $addClass . '>';
        foreach( $array[$content_parent] as $items ){

        /* Conditional to check if the module is parent and addClass, attr to its li */
        $addClassli = '';
        if( $content_parent == 0 ){
            $addClassli = 'class="menu-item menu-item-' . $items["content_id"] . '"';
        } else if( $content_parent > 0 ){
            $addClassli = 'class="submenu-item submenu-item-' . $items["content_id"] . '"';
        }

            echo '<li ' . $addClassli . '>';
            if(is_null($parent_slug)) {
                echo '<a href="' . SITE_URL . $items["content_slug"] . '">';
            } else {
                echo '<a href="' . SITE_URL . $parent_slug . '/' . $items["content_slug"] . '">';
            }

                echo $items["content_title"];
                echo '</a>';
                recursive_list_pages( $array, $items["content_id"], $items['content_slug']);
            echo '</li>';

        }
        echo '</ul>';
    }
}
如果您没有按照父id订购项目,结果是:父1、父1的第一个子项、父1的第二个子项、父2、父2的第一个子项等,我认为您应该这样做

但基本上,您需要传递父级的slug,而对于子链接,需要在其自己的slug之前附加父级slug

/* Recursive Admin Menu */
    function recursive_list_pages( $array = array(), $content_parent = 0 ){

        if( !empty($array[$content_parent]) ){

            /* Conditional to check if the module is parent and addClass to its ul */
            $addClass = '';
            if( $content_parent == 0 ){
                $addClass = 'class="menu menu-level-' . $content_parent . '"';
            } else if( $content_parent > 0 ){
                $addClass = 'class="submenu menu-level-' . $content_parent . '"';
            }

            echo '<ul ' . $addClass . '>';
            foreach( $array[$content_parent] as $items ){

            /* Conditional to check if the module is parent and addClass, attr to its li */
            $addClassli = '';
            if( $content_parent == 0 ){
                $addClassli = 'class="menu-item menu-item-' . $items["content_id"] . '"';
            } else if( $content_parent > 0 ){
                $addClassli = 'class="submenu-item submenu-item-' . $items["content_id"] . '"';
            }

                echo '<li ' . $addClassli . '>';
                    echo '<a href="' . SITE_URL . '' . $items["content_slug"] . '">';
                    echo $items["content_title"];
                    echo '</a>';
                    recursive_list_pages( $array, $items["content_id"] );
                echo '</li>';

            }
            echo '</ul>';
        }
    }



/* Get Menu from Database */
    function list_pages(){
        global $db;
        $sql = "SELECT * FROM hpl_content WHERE content_type='pages' ORDER BY content_sort ASC";
        $query = $db->SELECT($sql);
        $array = array();
        if( $db->NUM_ROWS() > 0 ){
            $rows = $db->FETCH_ARRAY();
            foreach( $rows as $row ){ $array[$row["content_parent"]][] = $row; }
            recursive_list_pages( $array );
        }
    }
/* Recursive Admin Menu */
function recursive_list_pages( $array = array(), $content_parent = 0,$parent_slug = null){

    if( !empty($array[$content_parent]) ){

        /* Conditional to check if the module is parent and addClass to its ul */
        $addClass = '';
        if( $content_parent == 0 ){
            $addClass = 'class="menu menu-level-' . $content_parent . '"';
        } else if( $content_parent > 0 ){
            $addClass = 'class="submenu menu-level-' . $content_parent . '"';
        }

        echo '<ul ' . $addClass . '>';
        foreach( $array[$content_parent] as $items ){

        /* Conditional to check if the module is parent and addClass, attr to its li */
        $addClassli = '';
        if( $content_parent == 0 ){
            $addClassli = 'class="menu-item menu-item-' . $items["content_id"] . '"';
        } else if( $content_parent > 0 ){
            $addClassli = 'class="submenu-item submenu-item-' . $items["content_id"] . '"';
        }

            echo '<li ' . $addClassli . '>';
            if(is_null($parent_slug)) {
                echo '<a href="' . SITE_URL . $items["content_slug"] . '">';
            } else {
                echo '<a href="' . SITE_URL . $parent_slug . '/' . $items["content_slug"] . '">';
            }

                echo $items["content_title"];
                echo '</a>';
                recursive_list_pages( $array, $items["content_id"], $items['content_slug']);
            echo '</li>';

        }
        echo '</ul>';
    }
}