需要3列WordPress布局帮助

时间:2011-12-22 19:18:24

标签: css wordpress layout

我正忙着为我博客的主页整理3x3杂志式布局。

我希望包含每个帖子的div垂直流动,因此每行3下面没有大的空白区域。看起来最简单的方法就是有三列并填充其中的每一行(这将阻止那里的每个后块下面的一个大空间),然后将这三列并排放置。

问题是Wordpress循环需要按顺序提取帖子。我不知道如何改变Wordpress循环的顺序,即使我已经尝试使用计数和for循环的PHP技巧,我似乎无法让它工作。

任何有关基本Wordpress循环或CSS方式的想法或建议都会让人非常感激,因为它会让我发疯!

What I want it to look like.

您可以在http://www.unleashreality.com/

查看当前的情况

3 个答案:

答案 0 :(得分:1)

这看起来像是jQuery Masonry的工作。

http://masonry.desandro.com/

上查看

答案 1 :(得分:0)

如果你想在没有Javascript的情况下这样做,你需要缓冲post循环中每一列的HTML,然后在循环完成后一次输出它。

如下所示:

<?php

    // Hold the buffered column output
    $cols = array("", "", "");

    // Keep track of column we're appending to
    $currentCol = 0;

    // Get the posts
    $posts = get_posts();
    foreach($posts as $post){ 

        // Run the WP post filters
        setup_postdata($post);

        // Append the content to the current column
        $cols[$currentCol] .= '<div class="item">';
        $cols[$currentCol] .= get_the_title();
        $cols[$currentCol] .= get_the_content();
        $cols[$currentCol] .= '</div>';

        // Increment the current column and make sure we haven't
        // gone over our total columns
        if(++$currentCol >= count($cols)){
            $currentCol= 0;
        }
    }

?>

<div id="col1"><?php echo $cols[0]; ?></div>
<div id="col2"><?php echo $cols[1]; ?></div>
<div id="col3"><?php echo $cols[2]; ?></div>

答案 2 :(得分:0)

使用循环操作的直接方法可能更简单,假设您的布局将修复一个,如模型图像中所示。

<?php

    $count = 0;
    $column_1 = '';
    $column_2 = '';
    $column_3 = '';
    $ad_block = '<div id="ad-block">Ad code here</div>';
    while ( have_posts() ) : the_post(); 

        $count++;
        $content = '';
        $content .= '<div class="post-block">';
        $content .= '<h2>'.get_the_title().'</h2>';
        $content .= '<div class="excerpt-block">'.get_the_excerpt().'</div>';
        $content .= '<div class="continuebutton">...READ THIS ARTICLE</div>'; // Add appropriate code here.. 

        if($count == 1 || $count == 4 || $count == 6) {
            $column_1 .= $content;
        } else if($count == 2 || $count == 7) {
            $column_2 .= $content;
        } else if($count == 3 || $count == 5 || $count == 8) { 
            $column_3 .= $content;
        } else {
            // Shouldn't come here...
        }                     

        // Insert the ad block in column 2 after adding 1st row
        if($count == 2) {     
            $column_2 .= $ad_block;
        }                     

    endwhile;                 
    ?>                        
    <div id="col1"><?php echo $column_1;?></div>
    <div id="col2"><?php echo $column_2;?></div>
    <div id="col3"><?php echo $column_3;?></div>

调整代码以使用内页。