用PHP生成引导列



我正在尝试使用高级自定义字段为Wordpress主题做一点引导布局。我已经设置了它,所以如果你有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列;

更新:

这是一个伪代码,但希望能给你关于如何继续的想法。注意,显然您仍然需要为每个列输出内容。

<?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; ?>

相关内容

  • 没有找到相关文章

最新更新