PHP将活动类提供给导航中的活动项

时间:2016-01-25 08:52:02

标签: php navigation

我试图使用php为活动导航项提供.active类,但我不知道任何解决方案可以实现这一点。目前它始终排在第1位,即使它没有。我真的没有看到这个问题,所以我希望你们可以帮助我。 这就是我现在所拥有的:

<?php
$pages = $db->queryarray("
        SELECT p.name, 
               u.url 
        FROM pages p
            , url u 
        WHERE p.active=1 
            AND p.hidden=0 
            AND p.root=0 
            AND p.menu=1 
            AND u.type='s' 
            AND u.source=p.id 
        ORDER BY p.position ASC
    ");

$i=1;

foreach($pages as $page)
{
    echo '<li>
                <a title="Pagename"'.($i==1?' class="active"':"").'href="index.php#page_'.str_replace(' ','_',strtolower($page['name'])).'">'.$page['name'].'</a>
          </li>';
    $i++;
}
?>

@mhakvoort

echo '<li><a title="Pagename" class="'.($page['active']) ? "active" : "" .'" href="index.php#page_'.str_replace(' ','_',strtolower($page['name'])).'">'.$page['name'].'</a></li>';

2 个答案:

答案 0 :(得分:0)

由于您的if语句$i == 1;

,第一个将永远为真

要将活动课程添加到您的活动页面,您需要具备此类内容,具体取决于您的字段名称。

在您的查询中,您需要添加活动布尔值,并在标记中检查它:

<?php
$pages = $db->queryarray("
        SELECT p.name,
               p.active, 
               u.url 
        FROM pages p
            , url u 
        WHERE p.active=1 
            AND p.hidden=0 
            AND p.root=0 
            AND p.menu=1 
            AND u.type='s' 
            AND u.source=p.id 
        ORDER BY p.position ASC
    ");

$i=1;

foreach($pages as $page)
{
    echo '<li>
                <a title="Pagename"'.($page['active']) ? 'class="active"' : "").'href="index.php#page_'.str_replace(' ','_',strtolower($page['name'])).'">'.$page['name'].'</a>
          </li>';
    $i++;
}
?>

答案 1 :(得分:0)

你需要有一个标识符,哪个页面是当前页面,因此我们可以利用$_GET php变量。

请注意我已将index.php#page_更改为index.php?page=

foreach ($pages as $page) {
         $pageIdentifier = str_replace(' ','_',strtolower($page['name']));

         $findActivePage = isset($_GET['page']) && $_GET['page'] ==  $pageIdentifier? " class='active' ": "";

         echo '<li><a title="Pagename" '.$findActivePage.' href="index.php?page='.$pageIdentifier.'">'.$page['name'].'</a></li>';

    }


<小时/>

您还可以在点击锚标记时使用jquery添加活动类。注意我已在您的锚标记中添加了 menu_item 类。

foreach ($pages as $page) {
         $pageIdentifier = str_replace(' ','_',strtolower($page['name']));
         echo '<li><a  class="menu_item" id="page_'.$pageIdentifier.'" title="Pagename" href="index.php#page_'.$pageIdentifier.'">'.$page['name'].'</a></li>';

    }

Jquery代码

 //menu item click event.

    $("a.menu_item").on("click",function(){
        //Remove active class in all a.menu_item
        $("a.menu_item").removeClass("active");

        //Add active class to the clicked menu_item
        $(this).addClass("active");
    });