PHP 为导航中的活动项目提供活动 class
PHP give active class to active item in navigation
我正在尝试使用 php 为活动导航项提供 .active class,但我不知道实现此目的的任何解决方案。目前,它始终处于活动状态的第一位,即使它不是。我真的没有看到问题,所以我希望你们能帮助我。
这是我目前拥有的:
<?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>';
第一个永远为真,因为你的 if 语句 $i == 1;
要将 class 活动添加到您的活动页面,您需要这样的东西,具体取决于您的字段名称。:
在您的查询中,您需要添加 active 布尔值,并在 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++;
}
?>
您需要有一个标识符,哪个页面是当前页面,因此我们可以利用 $_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>';
}
当你的锚标签是click.Note时,你也可以使用jquery来添加活动class 我已经添加了一个menu_item
class 到你的锚标签。
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");
});
我正在尝试使用 php 为活动导航项提供 .active class,但我不知道实现此目的的任何解决方案。目前,它始终处于活动状态的第一位,即使它不是。我真的没有看到问题,所以我希望你们能帮助我。 这是我目前拥有的:
<?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>';
第一个永远为真,因为你的 if 语句 $i == 1;
要将 class 活动添加到您的活动页面,您需要这样的东西,具体取决于您的字段名称。:
在您的查询中,您需要添加 active 布尔值,并在 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++;
}
?>
您需要有一个标识符,哪个页面是当前页面,因此我们可以利用 $_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>';
}
当你的锚标签是click.Note时,你也可以使用jquery来添加活动class 我已经添加了一个menu_item
class 到你的锚标签。
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");
});