Перебор массива + вставка произвольного куска верстки между определенными элементами

Статус
В этой теме нельзя размещать новые ответы.

funnywheel

PHP & JS
Регистрация
6 Авг 2010
Сообщения
255
Реакции
219
Не уверен, что заголовок дает исчерпывающую инфу, но я даже не знаю как это описать.

Есть массив (массив постов в WP) содержащий 7 элементов

Нужно: перебрать массив и после 3-го элемента вставить рандомный кусок верстки. Для упрощения понимания скрин:
Скрытое содержимое доступно для зарегистрированных пользователей!


как мне правильно, и желательно не громоздко это сделать? очень хотелось-бы получить индексы массива в любом виде (например в переменной, $i), чтобы после отработки цикла можно было вывести порядковый номер записи и при этом кастомному куску верстки поже проставить такой индекс (нужен для нумерации классов, к ним привязаны позиции спрайтов и т.д., в общем нужно)

UPD: массив содержит объекты класса Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование:
было бы неплохо увидеть структуру массива, но а в общем

вставить новый элемент в массив можно так
PHP:
array_splice($source, 4, 0, $element);

если массив не ассоциативный то его ключ и есть индекс, то есть
PHP:
foreach($source as $i => $value)
 
сорри, сразу не указал, массив содержит объекты (класса Для просмотра ссылки Войди или Зарегистрируйся)
соответственно, вывод постов в самой простой штатной ситуации выглядит как
PHP:
<?php 
    $posts = get_posts( $args_array );
    foreach( $posts as $post): ?>
        <div class="somepost">
            <h2><?php echo $post->post_title; ?></h2>
            <div><?php echo $post->post_content; ?></div>
            <!-- и т.д. -->
        </div>
<?php endforeach; ?>

в работе это выглядит приблизительно так (грубо, но наглядно)
Для просмотра ссылки Войди или Зарегистрируйся
 
судя по тому как формируется массив, то да, он простой.
как пример вывести "индекс - заголовок"

PHP:
<?php
    $posts = get_posts( $args_array );
    foreach( $posts as $idx => $post): ?>
        <div class="somepost">
            <h2><?php echo $idx . ' - ' . $post->post_title; ?></h2>
            <div><?php echo $post->post_content; ?></div>
            <!-- и т.д. -->
        </div>
<?php endforeach; ?>

вставить новый элемент на любую позицию, как писал выше можно через array_splice, при этом индексы будут в "правильном" порядке
 
массив там не ассоциативный
PHP:
PHP:
<?php 
    $posts = get_posts( $args_array );
    foreach( $posts as $key => $post) { ?>
        <div class="somepost">
            <h2><?php echo $post->post_title; ?></h2>
            <div><?php echo $post->post_content; ?></div>
            <!-- и т.д. -->
        </div>
<?php 
  if ($key == 2) { //да-да, именно 2, тут не опечатка
    echo 'кусок вёрстки после третьего элемента';
  }
} 
?>
 
Эм...а как на счет этого "при этом кастомному куску верстки поже проставить такой индекс (нужен для нумерации классов, к ним привязаны позиции спрайтов и т.д., в общем нужно)"? В этом же всё дело, если бы не обязательно было вставлять в массив постов - ясное дело, что просто решалось :)
 
заказчик пнул, чтобы спрайты с png были заменены на svg, попутно изменил принцип классов, для постов вывел нумерованные, для кастомного блока - отдельный класс. в любом случаем всем спасибо =)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху