Bootstrap下拉导航仅适用于动态导航中的当前页面

时间:2017-02-02 09:33:04

标签: php css twitter-bootstrap twitter-bootstrap-3

我在学习PHP,SQL等的同时建立了一个网站。 我现在正在尝试构建原始页面,我已经使用标准导航使每个工作正常,当我尝试添加引导程序导航栏时,下拉框仅出现在我当前正在使用的页面上。 在index.php没有下拉列表工作。该页面的后端有一个CMS,我试图让侧面的公共端看起来更好,并确保无论数据库中有多少新页面或主题,css都应用于所有内容。

任何帮助将不胜感激!

红利问题:我也希望克拉只出现在"主题"有多个页面与之关联,如果可能的话,我也无法弄清楚如何做到这一点。例如:所以当点击主题时,你会在点击时转到它唯一的页面,但如果有超过1页,则会出现一个carrat,下拉菜单是你从

选择所需页面的地方

我的导航是一个功能,只有导致我初始问题的CSS才能正常工作。

function public_navigation($subject_array, $page_array) {
        $output = "<nav class=\"navbar navbar-default\">";
        $output .= "<div class=\"container-fluid\">";
        $output .= "<div class=\"navbar-header\">";
        $output .= "<button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\"#myNavbar\">";
        $output .= "<span class=\"icon-bar\"></span>";
        $output .= "<span class=\"icon-bar\"></span>";
        $output .= "<span class=\"icon-bar\"></span>";
        $output .= "</button>";
        $output .= "<a class=\"navbar-brand\" href=\"index.php\">Company</a>";
        $output .= "</div>";
        $output .= "<div class=\"collapse navbar-collapse\" id=\"myNavbar\">";
        $output .= "<ul class=\"nav navbar-nav\">";
        $subject_set = find_all_subjects();
        while($subject = mysqli_fetch_assoc($subject_set)) {
            $output .= "<li class=\"dropdown\">";
            $output .= "<a class=\"dropdown-toggle\" data-toggle=\"dropdown\" href=\"index.php?subject=";
            $output .= urlencode($subject["id"]);
            $output .= "\">";
            $output .= htmlentities($subject["menu_name"]);
            $output .= "<span class=\"caret\"></span></a>";

            if ($subject_array["id"] == $subject["id"] || 
                $page_array["subject_id"] == $subject["id"]) {
                $page_set = find_pages_for_subject($subject["id"]);
                $output .= "<ul class=\"dropdown-menu\">";
                while($page = mysqli_fetch_assoc($page_set)) {
                    $output .= "<li>";
                    $output .= "<a href=\"index.php?page=";
                    $output .= urlencode($page["id"]);
                    $output .= "\">";
                    $output .= htmlentities($page["menu_name"]);
                    $output .= "</a></li>";
                }
                $output .= "</ul>";
                mysqli_free_result($page_set);
            }

            $output .= "</li>"; // end of the subject li
        }
        mysqli_free_result($subject_set);
        $output .= "</ul></div></div></nav>";
        return $output;
    }

编辑:This is what the menu looks like

但如果你点击任何其他标题,则不会出现下拉框,如果在带有通用欢迎页面的index.php上,没有菜单有下拉框或让你导航到它们

1 个答案:

答案 0 :(得分:0)

在不知道$ subject_array和$ page_array中传递的内容的情况下,很难说为什么会失败,但几乎可以肯定问题出现在你的if语句中:

if ($subject_array["id"] == $subject["id"] || $page_array["subject_id"] == $subject["id"]) {

看起来您根本不需要if语句,因为您希望每次都能获取给定主题的页面。所以我建议你尝试删除if并看看你得到了什么:

        $output .= "<span class=\"caret\"></span></a>";

        $page_set = find_pages_for_subject($subject["id"]);
        $output .= "<ul class=\"dropdown-menu\">";
        while($page = mysqli_fetch_assoc($page_set)) {
            $output .= "<li>";
            $output .= "<a href=\"index.php?page=";
            $output .= urlencode($page["id"]);
            $output .= "\">";
            $output .= htmlentities($page["menu_name"]);
            $output .= "</a></li>";
        }
        $output .= "</ul>";
        mysqli_free_result($page_set);

        $output .= "</li>"; // end of the subject li

现在您已经为每个主题提供了下拉菜单,您只需要一个小的if语句来添加一些额外的CSS类或其他内容来显示哪个主题是当前选定的主题。