我试图使用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>';
答案 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");
});