Я довольно новичок в PHP, но в свое время я создал несколько довольно простых тем WordPress. Я пытаюсь сделать что-то уникальное, и я не уверен, как это сделать (или если это вообще возможно).
Моя цель — создать цикл, который будет динамически закрывать строки, когда он достигнет значения столбца «12» для начальной загрузки (IE: col-md-3 + col-md-3 + col-md-6 = 12). Внешний вид, которого я, в конечном счете, пытаюсь достичь, и как я сейчас настроил свой статический файл => https://jsfiddle.net/y2mLr3hd/7/embedded/result/. Я использую только «display: flex;» прямо сейчас, чтобы просто продемонстрировать, чего я пытаюсь достичь. Я бы хотел, чтобы это были только строки, а не один ряд.
Я использую стандартный цикл для WordPress с использованием UL и LI, но я понятия не имею, как поступить, что я пытаюсь сделать. Я хотел бы, чтобы цикл вычислял случайное число для размера столбца, состоящего из размеров столбцов «3, 4, 6, 8», и создавал строки с размерами столбцов, равными «12», как я уже говорил ранее. ЭТО или найдите способ заставить его работать так, как я сейчас его настроил.
Это самая близкая вещь к тому, что я ищу, но на самом деле даже не так близко =>https://stackoverflow.com/questions/16427962/twitter-bootstrap-spans-in-dynamic-websites#знак равно. Вот код из этой ссылки для быстрого ознакомления:
$i=0;
foreach ($posts as $post):
if ($i%2==0) echo '<div class="row-fluid">';
echo '<div class="span6">'. $post->content .'</div>';
if ($i%2==1) echo '</div>';
$i++;
endforeach;
Буду признателен за любую помощь в том, как я могу это сделать!
Ваш вопрос состоит из двух частей:
Первый вопрос скорее математический. Обратите внимание, что вы можете комбинировать только 3 и 6 или 4 и 8. Вы не можете объединить 3 и 4, но все равно получите 12.
Мы разработаем простой алгоритм с учетом этого:
function getRandomNumbers()
{
// We start with an empty array and add numbers until we hit 12.
$result = array();
// We choose either 3 or 4 as basic number.
$x = mt_rand(3, 4);
// Now, as long as we don't hit 12, we iterate through a loop,
// adding either the basic number, or 2 times the basic number:
while (array_sum($result) < 12) {
// Randomly decide
if (mt_rand(0, 1) > 0) {
$newElement = 2 * $x; // This is either 6 or 8
// However, always make sure not to exceed 12:
if (array_sum($result) + $newElement > 12) {
$newElement = $x;
}
} else {
$newElement = $x; // This is either 3 or 4
}
// Add the new number to the array:
$result[] = $newElement;
}
// Return the resulting array
return $result;
}
Теперь нам нужно использовать эти массивы для создания строк. Мы начнем с создания массива со случайными числами с помощью функции, которую мы написали.
Мы будем просто перебирать посты, использовать числа в массиве, пока не останется ни одного. Мы будем генерировать новый массив со случайными числами всякий раз, когда нам понадобится новый. Так как это означает, что мы добавили 12 столбцов шириной ширины, это точка, где мы должны начать новую строку.
// Get the initial array with random numbers
$randomArray = getRandomNumbers();
// Open the initial row.
echo '<div>';
foreach ($posts as $post):
if (count($randomArray) < 1) {
// Close the row and start a new one:
echo '</div><div>';
// Get a fresh array with random numbers:
$randomArray = getRandomNumbers();
}
$nextRandomNumber = array_pop($randomArray); // This takes the next number.
echo '<div class="col-md-' . $nextRandomNumber . '">'. $post->content .'</div>';
endforeach;
echo '</div>'; // Close the final row.
Других решений пока нет …