Как правильно использовать div в заявлении while? У меня проблемы с выяснением - Как использовать div только один раз, пока работает цикл.
Мой текущий код в каждом цикле заканчивается так:
<div class = "column1">
<img src = "IMG1">
</div>
<div class = "column1">
<img src = "IMG">
</div>
Я пытаюсь достичь -
<div class = "column1">
<img src = "IMG1">
<img src = "IMG2">
</div>
Мой текущий код:
<div class = "roww">
<?php if ( have_rows( 'image-collection' ) ) :
$images = [];
$i = 0;
while ( have_rows( 'image-collection' ) ): the_row();
$images[ $i ] = get_sub_field( 'image' );
if ( get_sub_field( 'liela_bilde' ) == "True" ) { ?>
<div class = "column">
<img src = "<?php echo $images[ $i ][ 'url' ]; ?>" alt = "<?php echo
$images[ $i ][ 'alt' ]; ?>">
</div>
<?php } else { ?>
<div class = "column1">
<img src = "<?php echo $images[ $i ][ 'url' ]; ?>" alt = "<?php echo
$images[ $i ][ 'alt' ]; ?>">
</div>
<?php }?>
<?php
++$i;
endwhile;
endif; ?>
</div>
Если у вас есть две записи, которые вы хотите перебрать, и у вас есть вывод для обеих внутри column1, то вам, очевидно, нужно вывести этот div вне цикла while.
Просто использовать его один раз? На более серьезном замечании - использование и попытки создать самописную CMS - плохая идея, если вы новичок, а ваш код выглядит как попытка начать писать свою собственную CMS. Я могу ошибаться, но мне не очень непонятно, чего вы пытаетесь достичь, что вы используете (CMS? Plain php?) И т. Д.
@EugeneAnisiutkin Я забыл добавить Wordpress - Расширенные настраиваемые поля.
Итак, как liela_bilde играет в это, что именно вы хотите вывести, если это правда? В этом случае будет только одно изображение, или вы хотите вывести несколько блоков column в этом случае?
Я понял проблему, но сейчас не могу проверить свое решение. if ( get_sub_field( 'liela_bilde' ) == "True" ) может быть на данный момент дроппером или заменен на что-то другое. Основная проблема заключается в организации <div class = "column"> и <div class = "column1". в зависимости от оператора if они должны быть разными, и единовременно должен быть только один из них.






Я предполагаю, что вы можете использовать div в блоке PHP внутри цикла while. Если это так, вы можете использовать приведенный ниже синтаксис для достижения того же.
<?php
while($row = mysqli_fetch_array($result)){
echo "<div style='background-color:red;color:white;'>text</div>";
}
?>
Боюсь, это немного сложнее. Насколько мне известно, Wordpress have_rows( 'image-collection' ) ): the_row() должен остаться на прежнем месте.
После некоторых размышлений и небольшого тестирования я думаю, что получил довольно работоспособное решение. Ключ в том, что вы должны вывести <div> за пределы цикла while. Добавив дополнительную проверку if ($i==0), можно было сделать что-то вроде echo 'class = "column"'.
Мое решение, вероятно, худшее из возможных, но оно должно работать.
В итоге ваш код должен выглядеть примерно так:
<div class = "roww">
<?php if ( have_rows( 'image-collection' ) ) :
$images = [];
$i = 0;
?> <div <?
while ( have_rows( 'image-collection' ) ): the_row();
$images[ $i ] = get_sub_field( 'image' );
if ($i==0) {
if ( get_sub_field( 'liela_bilde' ) == "True" ) {
echo 'class = "column"';
}
else {
echo 'class = "column1"';
}
?> > <? } ?>
<img src = "<?php echo $images[ $i ][ 'url' ]; ?>" alt = "<?php echo
$images[ $i ][ 'alt' ]; ?>">
<?php
++$i;
endwhile; ?>
</div> <?
endif; ?>
</div>
Это не было проверено и может содержать ошибки, так как не было времени, чтобы попытаться воспроизвести вашу структуру. Однако, учитывая тот факт, что вы используете плагин Elliot Condon, он ДОЛЖЕН работает, а у вас НЕ ДОЛЖНА получается сломанный HTML из-за <div. Если да, то я где-то сделал ошибку.
Я также создал очень упрощенное решение, которое не зависит от плагинов, может быть адаптировано под ваши нужды и делает то, что вы хотите. Код можно найти ниже:
<div class = "roww">
<?php
$test=true;
if ( $test ) :
$images = [];
$i = 0;
?>
<div
<?php
while ( $test ) :
$test1=true;
if ($i==0) { if ($test1) echo 'class = "column"'; else echo 'class = "column1"';
?> > <? } ?>
<img src = "<?php echo "Yay"; ?>" alt = "<?php echo
"Nay"; ?>">
<?php
++$i;
if ($i==5) { break; }
endwhile; ?>
</div> <?php
endif;
?>
</div>
Выглядит немного иначе, но я старался сохранить основную логику. Изменив значения $test и $test1, вы можете изменить вывод моего примера.
Также примечание. Мой код основан на том, что я нашел на официальной странице плагина. Его можно найти здесь: Оригинал
Я думаю, что вы ищете, это создать строку с элементами X и начать новую строку на этом динамическом X?
В этом случае ответ можно найти с помощью%.
if ($myIndex % 2 === 0) {
// Do something
}
Как таковых не существует «правильного» или «неправильного» пути, это зависит от того, чего конкретно вы хотите достичь. (Что на данный момент довольно неясно, поэтому, пожалуйста, опишите это как следует.)