使用 PHP 生成 Bootstrap 列
Generating Bootstrap Columns with PHP
我正在尝试使用高级自定义字段为 Wordpress 主题制作一些 bootstrap 布局。我现在已经设置好了,所以如果你有 2 个内容字段,它会生成一个“6”宽的列。如果您有 3 个字段,它会生成一个“4”字段列。
<?php if(get_field('link_tiles')) :
while (has_sub_field('link_tiles')) :
$number_of_cols = count(get_field( 'link_tiles' ));
if ($number_of_cols == 2) {
echo '<div class="col-md-6" style="padding: 0; margin: 0;">';
}
elseif ($number_of_cols >= 3) {
echo '<div class="col-md-4" style="padding: 0; margin: 0;">';
}
?>
我现在真正想要的是,如果您输入了 4 个字段,它会生成 3x“4”宽的列,然后是 1x“6”宽的列,然后如果您输入了 6 个字段,它会返回生成“4”宽的列。我想使用 While 循环需要一些逻辑,但我不太明白它的逻辑。我是 PHP 的新手,我们将不胜感激!
如果没有看到周围的代码就很难说,但您一定已经在遍历列(为每个列回显 <div>
)。你在遍历数组吗?当前索引是否已经设置了变量?
如果是这样,逻辑可能是这样的,给定 $index 等于当前列号:
// set default for two columns
$col_class = 'col-md-6';
if ($number_of_cols == 3) {
$col_class = 'col-md-4';
} elseif ($number_of_cols == 4 && $index < 4) {
$col_class = 'col-md-4';
} elseif ($number_of_cols == 4 && $index == 4) {
$col_class = 'col-md-6';
}
echo '<div class="' . $col_class . '">';
虽然看起来如果你有 4 列,你真的想要 4 列 .col-md-3
而不是 3 列 .col-md-4
和一列 .col-md-6
就像你上面指定的那样(哪个总共有 18 列;Bootstrap 行最多 12 列)。
更新:
这是一段伪代码,但希望能为您提供有关如何继续的想法。请注意,显然您仍然需要为每一列输出内容。
<?php if(get_field('link_tiles')) :
$number_of_cols = count(get_field( 'link_tiles' ));
$counter = 1;
while (has_sub_field('link_tiles')) :
// set default for two columns
$col_class = 'col-md-6';
if ($number_of_cols == 3) {
$col_class = 'col-md-4';
} elseif ($number_of_cols == 4 && $counter < 4) {
$col_class = 'col-md-4';
} elseif ($number_of_cols == 4 && $counter == 4) {
$col_class = 'col-md-6';
}
echo '<div class="' . $col_class . '"></div>';
// increment the counter for the next column
$counter++;
endwhile;
endif; ?>
我正在尝试使用高级自定义字段为 Wordpress 主题制作一些 bootstrap 布局。我现在已经设置好了,所以如果你有 2 个内容字段,它会生成一个“6”宽的列。如果您有 3 个字段,它会生成一个“4”字段列。
<?php if(get_field('link_tiles')) :
while (has_sub_field('link_tiles')) :
$number_of_cols = count(get_field( 'link_tiles' ));
if ($number_of_cols == 2) {
echo '<div class="col-md-6" style="padding: 0; margin: 0;">';
}
elseif ($number_of_cols >= 3) {
echo '<div class="col-md-4" style="padding: 0; margin: 0;">';
}
?>
我现在真正想要的是,如果您输入了 4 个字段,它会生成 3x“4”宽的列,然后是 1x“6”宽的列,然后如果您输入了 6 个字段,它会返回生成“4”宽的列。我想使用 While 循环需要一些逻辑,但我不太明白它的逻辑。我是 PHP 的新手,我们将不胜感激!
如果没有看到周围的代码就很难说,但您一定已经在遍历列(为每个列回显 <div>
)。你在遍历数组吗?当前索引是否已经设置了变量?
如果是这样,逻辑可能是这样的,给定 $index 等于当前列号:
// set default for two columns
$col_class = 'col-md-6';
if ($number_of_cols == 3) {
$col_class = 'col-md-4';
} elseif ($number_of_cols == 4 && $index < 4) {
$col_class = 'col-md-4';
} elseif ($number_of_cols == 4 && $index == 4) {
$col_class = 'col-md-6';
}
echo '<div class="' . $col_class . '">';
虽然看起来如果你有 4 列,你真的想要 4 列 .col-md-3
而不是 3 列 .col-md-4
和一列 .col-md-6
就像你上面指定的那样(哪个总共有 18 列;Bootstrap 行最多 12 列)。
更新:
这是一段伪代码,但希望能为您提供有关如何继续的想法。请注意,显然您仍然需要为每一列输出内容。
<?php if(get_field('link_tiles')) :
$number_of_cols = count(get_field( 'link_tiles' ));
$counter = 1;
while (has_sub_field('link_tiles')) :
// set default for two columns
$col_class = 'col-md-6';
if ($number_of_cols == 3) {
$col_class = 'col-md-4';
} elseif ($number_of_cols == 4 && $counter < 4) {
$col_class = 'col-md-4';
} elseif ($number_of_cols == 4 && $counter == 4) {
$col_class = 'col-md-6';
}
echo '<div class="' . $col_class . '"></div>';
// increment the counter for the next column
$counter++;
endwhile;
endif; ?>