如何使用php使导航项显示正确的活动类
我正在建立一个CMS,我的导航有问题。我想将该类添加到导航中的活动项中。如果每个项目都有一个页面的话,这会很好,但是我有其他的部分和链接 这是我的密码:如何使用php使导航项显示正确的活动类,php,foreach,navigation,Php,Foreach,Navigation,我正在建立一个CMS,我的导航有问题。我想将该类添加到导航中的活动项中。如果每个项目都有一个页面的话,这会很好,但是我有其他的部分和链接 这是我的密码: <div id="main-menu"> <?php foreach ($items as $item) : ?> <?php $active = ''; ?> <?php if (isset($page)) : ?> <?php ($item->pageId
<div id="main-menu">
<?php foreach ($items as $item) : ?>
<?php $active = ''; ?>
<?php if (isset($page)) : ?>
<?php ($item->pageId === $page->id) ? $active = 'active' : $active = ''; ?>
<?php endif; ?>
<?php if ($item->link == '') : ?>
<a href="<?php echo ROOT_PATH; ?>front/site/page?x=<?php echo $item->id; ?>" class="<?php echo $active; ?>"><?php echo $item->label; ?></a>
<?php else : ?>
<a href="<?php echo $item->link; ?>" class="<?php echo $active; ?>"><?php echo $item->label; ?></a>
<?php endif; ?>
<?php endforeach; ?>
当我没有页面时,我会给链接提供指向特定部分的值。我怎样才能使它们都正常工作?您不需要那么多的
标签!无论如何,您的问题似乎是对的使用不正确。试试这个:
<?php
foreach ($items as $item) :
$active = '';
if (isset($page)) :
$active = ($item->pageId === $page->id) ? 'active' : '';
endif;
if ($item->link == '') :
?>
<a href="<?php echo ROOT_PATH; ?>front/site/page?x=<?php echo $item->id; ?>" class="<?php echo $active; ?>"><?php echo $item->label; ?></a>
<?php else : ?>
<a href="<?php echo $item->link; ?>" class="<?php echo $active; ?>"><?php echo $item->label; ?></a>
<?php
endif;
endforeach;
?>
以下是仅使用一对PHP标记的方法:
<?php
foreach($items as $item)
{
$active = ($item->pageId == $page->id) ? 'active' : '';
if(!$item->link)
{
echo '<a href="' . ROOT_PATH . '/front/site/page?x=' . $item->id . '" class="' .$active . '">' . $item->label . '</a>';
}
else
{
echo '<a href="' . $item->link . '" class="' .$active . '">' . $item->label . '</a>';
}
}
?>
神圣的php标签……嘿,我不确定以前是否见过有人用这种方式编写php代码。不管怎样,很难从你给出的上下文中说出你的意思。也许给出一些您当前获得的HTML输出示例,以及所需的HTML输出。然后是要更改行为的URL示例。另外,在使用时,请尝试在前面设置变量,如$active=($item->pageId====$page->id)?”活动':''代码>我循环浏览菜单上的所有链接项,我将活动设置为空,然后检查页面id是否等于链接项id,如果是,则表示我的项目链接在其页面上,我设置$active类。之后,我检查我是否没有页面集,如果没有,我会做一些事情。例如,如果我在一个菜单中有5个项目链接,其中3个有页面,2个没有页面,那么这些链接就不会被激活。你面临什么问题?您的代码似乎可以处理没有页面的问题。没有页面时,它不会将类设置为活动状态。同样,该语句正确地设置了$active,问题是没有页面的链接。您的代码表示,如果未设置$page
,$active
将等于'
。您是否在寻找不同的逻辑?是的,例如,我的新闻部分是一个模块,我的联系人是一个模块,当我在新闻页或联系人页上时,我的菜单链接未激活,它们被链接到。设置$active(如果不是一个页面的话)会使它们同时处于活动状态。即使他对三元运算符的使用很奇怪(不推荐),也没有什么问题<代码>($item->pageId===$page->id)$active='active':$active=''代码>将很好地工作。@Kristianantosen,是的,我明白了,var被分配了。但这很奇怪。是的,连接运算符(.)是你最好的朋友,这是我喜欢的样式。最小化php标记使代码更易于阅读。。。这对人类来说很好。字符串的单连字符表示法也有助于减少转义。代码是这样编写的,因为我在一个模板中,在php标记之间插入了更多html