计数Widget到位并设置类

时间:2013-09-29 作者:starter

(请温柔一点,我正从Joomla development过渡。)

我正在为这个客户端使用Twitter引导程序,我希望“底部”小部件位置能够“自动”为我的客户端工作,就像我在Joomla所习惯的那样,如果一个位置上发布了两个模块,那么将在每个div上添加适当的类以生成多个列。(例如:每个模块将被包装在“.col-md-6”中,如果有三列,那么将有三列,因为模块将被包装在“.col-md-4”等中。)

我知道我可以做一个bottom1、bottom2和bottom3的位置,然后这样做,但这会给我的客户带来额外的困惑。尤其是当我需要很多这样的职位时。

我知道Wordpress一定能做到这一点,但我似乎无法理解。(我会使用Joomla!但他们希望自己的网站有一个博客,还需要自定义内容类型。)任何帮助都将不胜感激。下面是我收集到的一些“片段”,但如何将它们放在一起却没有意义。非常感谢。

我有这个功能来注册我的小部件functions.php:

function my_widgets_init() {
    register_sidebar( array(
        \'name\' => \'bottom\',
        \'id\' => \'bottom\',
        \'before_widget\' => \'<div class="col-xs-6 col-md-4">\',
        \'after_widget\' => \'</div>\',
        \'before_title\' => \'<h3>\',
        \'after_title\' => \'</h3>\',
    ));
}
add_action( \'widgets_init\', \'my_widgets_init\' );
这个函数在functions.php:

function count_sidebar_widgets( $sidebar_id, $echo = true ) {
    $num_widgets = wp_get_sidebars_widgets();
    if( !isset( $num_widgets[$sidebar_id] ) )
        return __( \'Invalid sidebar ID\' );
    if( $echo )
        echo count( $num_widgets[$sidebar_id] );
    else
        return count( $num_widgets[$sidebar_id] );
}
在中显示小部件的My htmlindex.php:

<?php if( is_active_sidebar(\'bottom\') ) { ?>
    <section class="row">
        <?php dynamic_sidebar(\'bottom\'); ?>
        <?php count_sidebar_widgets( \'bottom\' ); ?>
    </section>
<?php } ?>
感谢您的时间和关注。

1 个回复
SO网友:starter

我在这个网站上找到了一个以前在@Get number of widgets in sidebar

function cosmos_bottom_sidebar_params($params) {

    $sidebar_id = $params[0][\'id\'];

    if ( $sidebar_id == \'sidebar-bottom\' ) {

        $total_widgets = wp_get_sidebars_widgets();
        $sidebar_widgets = count($total_widgets[$sidebar_id]);

        $params[0][\'before_widget\'] = str_replace(\'class="\', \'class="span\' . floor(12 / $sidebar_widgets) . \' \', $params[0][\'before_widget\']);
    }

    return $params;
}
add_filter(\'dynamic_sidebar_params\',\'cosmos_bottom_sidebar_params\');
这是我在年为Twitter Bootstrap 3修改过的代码functions.php:

function my_widgets_init() {
    register_sidebar( array(
        \'name\' => \'bottom\',
        \'id\' => \'bottom\',
        \'before_widget\' => \'<div class="">\',
        \'after_widget\' => \'</div>\',
        \'before_title\' => \'<h3>\',
        \'after_title\' => \'</h3>\',
    ));
}
add_action( \'widgets_init\', \'my_widgets_init\' );


// Dynamic Sidebar Positions

    // Bottom
    function cosmos_bottom_sidebar_params($params) {

        $sidebar_id = $params[0][\'id\'];

        if ( $sidebar_id == \'bottom\' ) {

            $total_widgets = wp_get_sidebars_widgets();
            $sidebar_widgets = count($total_widgets[$sidebar_id]);

            $params[0][\'before_widget\'] = str_replace(\'class="\', \'class="col-md-\' . floor(12 / $sidebar_widgets) . \' \', $params[0][\'before_widget\']);
        }

        return $params;
    }
    add_filter(\'dynamic_sidebar_params\',\'cosmos_bottom_sidebar_params\');

结束

相关推荐

Remove Widgets in Dashboard

另一个noob问题。。。当作者登录并访问其仪表板时,他们会看到各种小部件,例如Internet Explorer警告、WordPress动态新闻。是否要为所有用户(现在和将来)删除所有这些内容,以便他们只看到“快速按”&;\'现在的小部件?谢谢