【问题标题】:Change class of a menuitem to active if page alias matches menu alias (in a foreach)如果页面别名与菜单别名匹配(在 foreach 中),则将菜单项的类更改为活动
【发布时间】:2016-02-04 11:21:38
【问题描述】:

我有一个使用 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 添加到列表标记中?

【问题讨论】:

    标签: php html .htaccess foreach


    【解决方案1】:

    您可以引入$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';
        }
    ?>
    

    【讨论】:

    • 这样可以吗?指定变量后加问号?
    • 没关系,您将类添加到锚标记,我将其更改为列表标记,它就像我想要的那样工作:) 谢谢!
    • @twan:它是这样工作的,因为它是一个比较。无论如何,很高兴能提供帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    • 2013-02-16
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多