嘿,伙计们,我下面有一段代码,它在一个div中进行3次迭代后包装项目。然而,我对如何计算该div中的项目感到困惑,因为我将其称为自定义类的条件。
因此,对于可视化,它应该看起来像这个
项目行项目项计数-3
- 项目_项目
- 项目_项目
- 项目_项目
项目行项目项计数-3
- 项目_项目
- 项目_项目
- 项目_项目
项目行项目项计数-2
- 项目_项目
- 项目_项目
我该如何处理?
这就是我到目前为止提出的
if( ($i % 3) == 0 ) { $griditemcounter = 1; }
// If is the first post, third post etc.
( ( $i % 3 ) == 0 ) ? $html .= '<div class="project_row projectcount-'.$projectCounter.' grid-'.( ( $griditemcounter % 2 ) == 0 ? 'second' : 'first' ).'">' : $html .= '';
$html .= '<div class="project_item grid'.$griditemcounter.'" style="background-image:url('.( $url ? $url : 'https://via.placeholder.com/940x1260').') ">';
$html .= '<a href="'.get_the_permalink().'">';
$html .= '<div class="project_item_img"><img src="'.( $url ? $url : 'https://via.placeholder.com/768x375').'" alt=""/></div>';
$html .= '<div class="et_pb_text_inner project_item_content">';
$html .= '<h3>'.get_the_title().'</h3>';
$terms = get_the_terms( get_the_ID(), $taxonomy );
foreach($terms as $term) {
$html .= '<p>'. $term->name. '</p>';
}
$html .= '</div>';
$html .= '</a>';
$html .= '</div>';
( $i == ( $post_count - 1 ) || ( ++$i % 3 ) == 0 ) ? $html .= '</div>' : $html .= '';
$griditemcounter++;
我会添加一个名为Count或Tracker的变量,并在此循环之外将其设置为1。一旦你的代码迭代了一次并完成了这个过程:
projectrow projectitemcount-(在此处添加变量(
- 项目_项目
- 项目_项目
然后您可以在循环之外的变量中添加一个。这样,当循环再次运行时,它将在项目计数上添加2,并将其添加到名称上。
事先计算一下:这里有8个项目,所以整数除以3,得到2,再乘以3,得到6——这是你要放入的元素数量;"满";div,每个包含3个项目。
只要循环计数器变量$i是<6,输出3作为类后缀。
之后,对于最后一个div,输出8模3,在本例中也是2,作为后缀——这是将进入最后一个容器的剩余元素的数量。
快速&举例说明原理:
$data = range('A', 'H'); // array of fake data
$limit = 3;
$numberFull = floor(count($data) / $limit) * $limit;
$remainder = count($data) % $limit;
for($i=0, $l=count($data); $i<$l; ++$i) {
echo $data[$i], ' - ',
($i % $limit == 0 ? ($i < $numberFull ? $limit : $remainder) : ''), "n";
}
生成以下输出:
A - 3
B -
C -
D - 3
E -
F -
G - 2
H -
我真的不知道你的项目项的结构,但我认为它只是一个普通的数组,比如:
$items = [
['name' => 'Project 1'],
['name' => 'Project 2'],
['name' => 'Project 3'],
['name' => 'Project 4'],
['name' => 'Project 5'],
['name' => 'Project 6'],
['name' => 'Project 7'],
['name' => 'Project 8'],
];
如果你有上面的结构,你可以array_chunk
获得最多3个项目的包,然后迭代这些包来处理你的显示:
<?php
$itemsChunks = array_chunk($items, 3);
?>
<?php foreach($itemsChunks as $itemsChunk): ?>
<div class="project_row projectcount-<?= count($itemsChunk); ?>">
<?php foreach($itemsChunk as $item): ?>
<p><?= $item['name']; ?></p>
<?php endforeach; ?>
</div>
<?php endforeach; ?>
然后输出:
<div class="project_row projectcount-3">
<p>Project 1</p>
<p>Project 2</p>
<p>Project 3</p>
</div>
<div class="project_row projectcount-3">
<p>Project 4</p>
<p>Project 5</p>
<p>Project 6</p>
</div>
<div class="project_row projectcount-2">
<p>Project 7</p>
<p>Project 8</p>
</div>
你可以在线试用!