需要在php中添加一个计数器以每4列分隔一行
我有这个代码,我需要每4个帖子关闭一行。每个帖子都在一个div中。我尝试了一些东西,但无法实现我的代码需要在php中添加一个计数器以每4列分隔一行,php,twitter-bootstrap,row,counter,Php,Twitter Bootstrap,Row,Counter,我有这个代码,我需要每4个帖子关闭一行。每个帖子都在一个div中。我尝试了一些东西,但无法实现我的代码 <?php echo "<div class='row'>"; global $post; $all_events = tribe_get_events( array( 'eventDisplay'=>'upcoming', //'posts_per_page'=>10
<?php
echo "<div class='row'>";
global $post;
$all_events = tribe_get_events(
array(
'eventDisplay'=>'upcoming',
//'posts_per_page'=>10,
)
);
foreach($all_events as $post) {
setup_postdata($post);
?>
<div class="col-sm-3">
<span class="event-date"><?php echo tribe_get_start_date($post->ID, true, 'j M'); ?></span>
<h3><?php the_title(); ?></h3>
<?php if ( has_post_thumbnail() ) { ?>
<div class="event-thumb">
<a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('thumbnail'); ?></a>
</div>
<div class="event-excerpt">
<?php the_excerpt(); ?>
</div>
<?php } else { ?>
<div class="event-content">
<?php the_content(); ?>
</div>
<?php } ?>
</div>
<?php } //endforeach ?>
<?php wp_reset_query(); ?>
您需要。它的工作原理如下:
$i == 0;
foreach($some_array as $some_value){
if ($i % $number_to_divide_by == 0) {
// do something here every nth time
}
$i++;
}
实际上,我会100%用CSS解决这个问题,所以您不需要在PHP代码中进行任何计数或处理
看一看
float:left
将导致单个元素彼此跟随(左对齐)。
clear:left
在每个4*n+1
-第th个元素(n个子元素(4n+1)
)将清除此项,基本上强制换行
对此有一个警告:如果一行中没有容纳所有4个条目的空间,那么最终会出现额外的包装,这可以通过为容器定义固定的宽度来避免
PHP的简化代码版本只需计算写入的字段,并根据需要添加换行符:
$i = 1; // counter
foreach ($events as $event) { // iterate over all events
if ($i++ % 4 == 0) // a % b will be 0 for 4, 8, etc.
echo '<br />'; // print the line break using whatever HTML you see fit.
print_event($event); // print the actual event
}
$i=1;//柜台
foreach($events as$event){//迭代所有事件
如果($i++%4==0)//a%b对于4、8等将是0。
echo“
”;//使用您认为合适的HTML打印换行符。
打印事件($event);//打印实际事件
}
您可能会问我是否在实际打印事件之前检查换行符:这是为了防止在条目数为4的倍数时出现额外的换行符,也就是说,我避免有一个空的尾随行。所以您基本上想要一个每四个条目包装一次的列表?我知道,但是我的代码中的实现有问题。
$i = 1; // counter
foreach ($events as $event) { // iterate over all events
if ($i++ % 4 == 0) // a % b will be 0 for 4, 8, etc.
echo '<br />'; // print the line break using whatever HTML you see fit.
print_event($event); // print the actual event
}