基于网址格式的菜单突出显示

时间:2014-02-13 20:48:55

标签: php jquery

如果在类别中找到特定标记,我会创建一个侧边栏菜单。例如

  • 苹果
  • 橙子

点击后,网址格式如下:

  

/类别/?标签=苹果

呈现菜单的代码如下:

       <?php if ( $term->slug == 'apples' ) {?>
        <section class="item">
        <h4><a href="<?php $category_id = get_query_var('cat'); 
echo get_category_link( $category_id );?>?tag=apples"> Apples</a>
    </h4></section>

         <?php } if ( $term->slug == 'oranges') {?>
         <section class="item">
        <h4><a href="<?php $category_id = get_query_var('cat'); 
echo get_category_link( $category_id );?>?tag=oranges"> Oranges</a>
    </h4></section>
        <? } ?>
        <?php } } ?>

当有活跃的网址格式时,我很难用红色背景突出显示“苹果”,而橙色背景的橙色则相同。

我已经尝试了各种Jquery小提琴示例,这些示例在小提琴上完美运行,但在我实现它们时却没有。大多数用于静态html页面,这更容易。

3 个答案:

答案 0 :(得分:0)

这可能是你应该放在循环中的东西,但是apples部分的一个例子:

<section class="item <?php echo ($term->slug === $_GET('tag')) ? 'active' : '';">
    <h4><a href="<?php $category_id = get_query_var('cat'); 
          echo get_category_link( $category_id );?>?tag=apples"> Apples</a>
  </h4></section>

请注意,我在section元素中添加了一个active类,以便您可以对该(或其子元素)设置不同的样式。

答案 1 :(得分:0)

为什么不验证$ _GET变量,然后突出显示活动URL?

if ($_GET['tag'] == 'apples')
    echo ''; //Highlight : ON, with CSS
else
    echo ''; //Highlight : OFF

同样适用于“橘子”。

答案 2 :(得分:0)

由于您使用jQuery标记它,您可以在客户端解决它:

function getParameterByName(name) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
    return results == null ? "" : 
           decodeURIComponent(results[1].replace(/\+/g, " "));
}

$(function(){

    var tag = getParameterByName('tag');

    if(tag){

        $('h4').filter(function(){
            return $(this).text().toLowerCase() === tag;
        }).css({ color: 'red' });
    }

});

尽管我建议您使用PHP直接在服务器上解决它。只是一个替代方案。