Style every second widget?

时间:2011-08-12 作者:daysrunaway

我需要对侧边栏中的每一个小部件应用某种样式,由于跨浏览器兼容性问题,我不愿意使用:nth child。是否有一些PHP允许我将一个类应用于每个其他小部件?

3 个回复
最合适的回答,由SO网友:Chris Carson 整理而成

使用dynamic_sidebar_params 滤器下面的代码添加了一些类来说明小部件是奇数还是偶数、它在侧栏中的索引以及它在侧栏中的位置。

Note: 这个str_replace("class=\\"", "class=\\"$class ", $before_widget); 下面的代码取决于您的before_widget 使用双引号——可能还应该使用正则表达式来处理单引号。我只是还没来得及做这件事。

function my_filter_dynamic_sidebar_params($params){

    static $sidebar_widget_count = array();
    $sidebar_id = $params[0]["id"];
    if (! isset($sidebar_widget_count[$sidebar_id])){
        $sidebar_widget_count[$sidebar_id] = 0;
    }
    $before_widget = $params[0][\'before_widget\'];
    $class = $sidebar_widget_count[$sidebar_id] % 2 ? 
        "widget-odd" : "widget-even";
    $class .= " widget-index-" . $sidebar_widget_count[$sidebar_id];
    $class .= " widget-in-$sidebar_id";
    $before_widget = str_replace("class=\\"", 
        "class=\\"$class ", $before_widget);
    $params[0][\'before_widget\'] = $before_widget;
    $sidebar_widget_count[$sidebar_id]++;
    return $params;
}

add_filter("dynamic_sidebar_params", "my_filter_dynamic_sidebar_params");

SO网友:Chip Bennett

这可能是一个使用CSS的好地方:nth-child 伪类,尤其是:nth-child(odd):nth-child(even). 我不会太担心浏览器的兼容性。如果必须的话,只需对IE8使用jQuery即可。

SO网友:hfz

这里有一个关于WordPress的相关讨论。组织论坛:http://wordpress.org/support/topic/dynamic-widget-classes-for-use-in-css

结束

相关推荐

仅在css和几个图像中更改主题

我们创建了一个有很多变化的主题。现在,我们想在我们的网站上启用不同颜色的主题,以及一些不同的图像:我们正在做的是复制主题,然后在CSS中做一些更改,并更改一些图像。但是,复制所有的主题文件只是为了进行很少的更改,这似乎是一种过分的做法。此外,如果我们不得不改变主题中的一些功能,我们将不得不经历所有的重复并应用它。有没有办法让用户可以选择更改颜色&;图像,而不复制主题?