PHP为导航中的活动项提供活动类
我试图使用php为活动导航项提供一个.active类,但我不知道有什么解决方案可以实现这一点。目前,它始终是1号活动的,即使它不是。我真的看不出有什么问题,所以我希望你们能帮我解决。 这就是我目前的情况:PHP为导航中的活动项提供活动类,php,navigation,Php,Navigation,我试图使用php为活动导航项提供一个.active类,但我不知道有什么解决方案可以实现这一点。目前,它始终是1号活动的,即使它不是。我真的看不出有什么问题,所以我希望你们能帮我解决。 这就是我目前的情况: <?php $pages = $db->queryarray(" SELECT p.name, u.url FROM pages p , url u WHERE p.acti
<?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++;
}
?>
由于您的if语句$i==1,所以第一个始终为true代码>
要将“活动”类添加到活动页面,您需要这样的内容,具体取决于字段名:
在查询中,您需要添加活动布尔值,并在a标记中对其进行检查:
<?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++;
}
?>
您需要有一个标识符,即哪个页面是当前页面,因此我们可以利用$\u 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 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");
});
打印($pages)的结果是什么代码>?第一个将始终处于活动状态,因为您将$i设置为1,如果$i==1,则页面将处于活动状态。打印结果为:数组([0]=>Array([name]=>name[url]=>/name.html)[1]=>Array([name]=>About-Us[url]=>/About-Us.html)[2] =>数组([name]=>产品[url]=>/The-product.html)[3]=>数组([name]=>Contact[url]=>/Contact.html))@marijn你只想要php解决方案吗?@Jamerswart lopez不需要,但我更喜欢这样的PHPLike我在导航栏中得到了结果Active我会尝试找出问题所在。你能以编辑代码的方式显示代码吗?我添加了你的精确代码,并合并了编辑的部分。现在,代码也在一个代码块中k以上回音“”;链接将始终处于激活状态,因为WHERE isp.active=1
,这是结果$page['active']
并将始终1
使用您上次的编辑@mhakvoort,它给了我一个空白页面,控制台中没有错误。downvoter请继续。解释为什么我的答案需要被否决。您的解决方案让我非常接近,但有一个问题,我需要index.php?page=成为index.php#page u,因为我正在使用其他脚本g、 更改后返回不起作用。我现在会尝试解决它,但到目前为止它非常有用。这就是为什么要询问您是否需要仅使用php的解决方案的原因。我稍后会更新我的答案,因为我认为需要一点javascript。很抱歉,我没有真正理解这个问题,但我感谢您的帮助help@marijn我已经更新了我的answer请检查。希望这对您有帮助:D
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>';
}
//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");
});