如何在分类存档页面上拆分多列循环?

时间:2012-07-05 作者:Nisha_at_Behance

我正在创建一个具有多个循环的自定义页面模板,如下所示http://demos.gabfirethemes.com/advanced/category/football/

您可以看到,有多个帖子被拆分为多个栏目:一个特色帖子,然后是两个帖子,然后是右侧的4个帖子。

我只能把帖子分成两列。

请您解释一下如何将循环拆分为多个列,如this ?

2 个回复
SO网友:kaiser

基本列由CSS管理。因此,如果您使用css框架,如Bootstrap,Blueprint CSS 或者任何其他类,但您可以将一些类添加到文章/帖子容器中,以便它们浮动在所需的列数中。

Blueprint CSS在Blueprint CSS的情况下,这可能是span-8 (24柱网上的3柱布局),等级为last 已附加到您连续的最后一篇文章。

推特引导程序

在推特引导程序的情况下span4 (12列网格上的3列布局)包含一个容器,该容器包装每一行并具有类row.

它是如何工作的,所以您需要确定您在哪个帖子上(在您的查询中-请记住,在大多数编程语言中,计数是从0 ,然后将类(或插入标记)添加到特定帖子。对于所有其他帖子,只需添加默认类或标记。

示例说明在下面的示例中,我们使用$wpdb global,它保存数据库函数的实例。这样我们可以检查实例varcurrent_post 去拿柜台。然后我们使用++ 增加计数器。

如何使用核心API应用类post_class(), 它响应了一组标准的WPs内部类,以及我们添加的自定义(特定于CSS框架)类,并添加了class="wp-internal-classes and custom-classes" 至容器(divarticle).

(可能)最佳实践示例

global $wpdb;
if ( have_posts() )
{
    while ( have_posts() )
    {
        the_post();

        $class  = get_post_format();
        // Current post: starts with index 1 - fixing the fact, that PHP starts with 0 else.
        // [A] HER YOU CAN ADD ANY CLASSES THAT YOU NEED FOR EVERY 3rd POST
        $class .= 0 === ( ++$wpdb->current_post % 3 ) ? \' special-class\' : \'\';

        ?>
        <!-- Open Post Container -->
        <article <?php post_class( "span4 post{$class}" ); ?> id="post-<?php the_ID(); ?>">

            <!-- [B] HERE YOU CAN ADD YOUR ACTUAL POST -->

        <!-- // Close Post Container -->
        </article>
    }
}

SO网友:brasofilo

代码基于this answer, 需要进一步调整,但展示了以下概念:

$count = 0;
while ( have_posts() ) : the_post();

if ( $count < 1 ) {
  // first post
  echo \'<div id="left-column">\';
  the_title();
} elseif ( $count <= 2 ) {
  // next 2 posts
  the_title();
  if( $count == 2) echo \'</div><!-- end left-column -->\';
} else {
  // rest of the posts
  if( $count == 3) echo \'<div id="right-column">\';
  the_title();
}

$count++;
endwhile;
echo \'</div><!-- end right-column -->\';

结束

相关推荐

get_meta_data within a loop

我试图制作一个简单的小部件,它显示一个帖子列表,后面是每个帖子的一些元数据。这是我的代码:$eventdate 包含我需要检索的元数据。query_posts(\'\'); if (have_posts()) : echo \"<ul>\"; while (have_posts()) : the_post(); $eventdate = get_post_meta($post->ID, \'event-date