Оберните каждые два элемента в DIV, но оберните один элемент, если определенное условие «верно» - PullRequest
0 голосов
/ 02 июля 2019

К сожалению, я не могу понять, как обернуть два элемента в DIV и одновременно обернуть один элемент, если определенное условие "true".

<div class='row'>
    <?php 

      $projects = $page->children()->listed();
      $i = 0

      foreach($projects as $project) {
        echo "<article class='project'></article>";
      }

      $i++

      if($project->isFullWidth() == "true") {
        $i++;
      }

      if($i%2 == 0 && $i != count($projects)) {
        echo "</div><div class='row'>"
      }
    ?>
</div>

Есть два <article class='project'> -элементы рядом друг с другом в одном <div class='row'>, если project имеет условие "isFullWidth", в <div class='row'> должен быть только один project.

Ожидаемый результат:

<div class='row'>
    <article class='project'></article>
    <article class='project'></article>
</div>
<div class='row'>
    <article class='project isFullWidth'></article>
</div>
<div class='row'>
    <article class='project'></article>
    <article class='project'></article>
</div>

Фактический результат:

<div class='row'>
    <article class='project'></article>
    <article class='project'></article>
</div>
<div class='row'>
    <article class='project isFullWidth'></article>
    <article class='project'></article>
    <article class='project'></article>
</div>
<div class='row'></div>
<div class='row'></div>

Ответы [ 2 ]

1 голос
/ 02 июля 2019

Это пытается отследить количество выводимых элементов, каждый раз, когда выводится новая строка, она сбрасывает счетчик, чтобы можно было отслеживать следующую. Он также создаст новую строку, если у вас (например) 1 нормаль, а затем 1 полная ширина будет разделена.

$i = 0;
echo "<div>";
foreach($projects as $project) {
    // Start new row for full width (unless just started one)
    if($project->isFullWidth() == "true" && $i != 0) {
        echo "</div>".PHP_EOL."<div class='row'>";
    }
    echo "<article class='project".($project->isFullWidth()? "isFullWidth":"")."'></article>";
    $i++;
    // End row if needed and reset column count
    if($project->isFullWidth() == "true" || ($i == 2 && $i != count($projects))) {
        echo "</div>".PHP_EOL."<div class='row'>";
        $i = 0;
    }
}
echo "</div>";
1 голос
/ 02 июля 2019

Это должно работать для вас:

<div class='row'>
    <?php $projects = $page->children()->listed(); ?>

    <?php $i = 0 ?>

    <?php foreach($projects as $key => $project): ?>
        <article class='project'></article>

        <?php $i++ ?>

          <?php if($project->isFullWidth() === "true"): ?>
            <?php $i = 2; ?>
          <?php endif ?>

          <?php if($i === 2): ?>
            <?php echo "</div><div class='row'>" ?>
            <?php $i = 0 ?>
          <?php endif ?>

    <?php endforeach ?>

</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...