我正忙着为我博客的主页整理3x3杂志式布局。
我希望包含每个帖子的div垂直流动,因此每行3下面没有大的空白区域。看起来最简单的方法就是有三列并填充其中的每一行(这将阻止那里的每个后块下面的一个大空间),然后将这三列并排放置。
问题是Wordpress循环需要按顺序提取帖子。我不知道如何改变Wordpress循环的顺序,即使我已经尝试使用计数和for循环的PHP技巧,我似乎无法让它工作。
任何有关基本Wordpress循环或CSS方式的想法或建议都会让人非常感激,因为它会让我发疯!
查看当前的情况
答案 0 :(得分:1)
这看起来像是jQuery Masonry的工作。
上查看答案 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>
调整代码以使用内页。