如果页面别名与菜单别名匹配,则将菜单项的类更改为活动(在 foreach 中)


Change class of a menuitem to active if page alias matches menu alias (in a foreach)

我得到了一个简单的侧边菜单,它使用foreach显示:

<?
    if($contentcr[0]['catid'] == '9'){
        foreach($pagecr as $page){
            $landingnospace = str_replace(' ', '_', $page['alias']);
            $title = $page['title'];
            if($title != '') {
            $contentje .= '<li><a href="http://www.website.nl/_extern/website1/'.$landingnospace.'.html">'.$title.'</a></li>';  
            }
        }
        echo $contentje;
    }
    else{
        echo 'Alternatief sidemenu';
    }
?>

页面的别名使用 .htaccess 显示在 url 中:

DirectoryIndex
RewriteEngine  on
RewriteBase /_extern/website1/
#Indexes uitzetten
Options -Indexes
#Website1
RewriteRule     ^(.*).html content.php?alias=$1 [L]

我目前在页面上使用两个查询,一个用于db_content,一个用于db_categories

db_content:

//  content
    $content        = "SELECT * FROM `db_content` WHERE alias = '".$_GET['alias']."' ";
    $contentcon         = $conn->query($content);
    $contentcr          = array();
    while ($contentcr[]     = $contentcon->fetch_array());

db_categories

//  Pages
$page               = "SELECT con.title, con.alias, con.images, con.introtext
                       FROM db_content con
                       LEFT JOIN db_categories cat ON con.catid = cat.id
                       AND cat.alias = '".$_GET['alias']."' WHERE con.state = 1 ORDER BY `ordering` DESC"; 
$pagecon            = $conn->query($page);
$pagecr             = array();
while ($pagecr[]    = $pagecon->fetch_array());

那么如何将 foreach 中的结果与 url 中的别名进行比较,如果它们匹配,则将类:current-menu-item添加到列表标签中?

您可以引入一个$class变量,看看当前$page["alias"]是否等于$_GET["alias"]。如果是这样,请应用类current-menu-item ,如果没有,请将其留空。

<?
    if($contentcr[0]['catid'] == '9'){
        $alias = $_GET["alias"];
        foreach($pagecr as $page){
            $landingnospace = str_replace(' ', '_', $page['alias']);
            $title = $page['title'];
            if($title != '') {
                // magic happens here
                $class = ($page["alias"] == $alias)?"current-menu-item":"";
                $contentje .= '<li><a class="'.$class.'" href="http://www.website.nl/_extern/website1/'.$landingnospace.'.html">'.$title.'</a></li>';  
            }
        }
        echo $contentje;
    }
    else{
        echo 'Alternatief sidemenu';
    }
?>