Доброго вам дня ! Ситуация следующая есть задача создать таблицу вывода новостей на сайте три строчки по три столбца проблема заключается в том что движок WP выводит новости на сайте пока они есть соответственно используется цикл PHP: <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> далее идет формирование поста PHP: <table > <tr> <td><div class="post"><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(array(100,150)); ?></a></div></td> </tr> <tr> <td><h2 class="post"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2></td> </tr> <tr> <td><div class="readmore"><a href="<?php the_permalink(); ?>">Читать далее</a></div></td> </tr> </table> <?php endwhile; ?> <?php else: ?> <?php endif; ?> это выводится один пост и цикл повторяется нашел пример создания таблиц в php PHP: <?php $rows = 20; // количество строк, tr $cols = 20; // количество столбцов, td echo '<table border="1">'; for ($tr=1; $tr<=$rows; $tr++){ // в этом цикле счётчик $tr // следит за количеством строк и всегда равен текущему номеру строки. // То есть в начале $tr=1, так как в начале у нас 1 строка, затем // каждый раз прибавляем единицу, пока не дойдём до заданного количества // $rows. echo '<tr>'; for ($td=1; $td<=$cols; $td++){ // в этом цикле счётчик $td аналогичен // счётчику $tr. echo '<td>'. $tr*$td .'</td>'; } echo '</tr>'; } echo '</table>'; ?> но цикл в цикле почему-то ругается подскажите как это можно уложить в еще одну таблицу 3х3 для наглядности кто не знаком с особенностями уточню в WP можно указать сколько раз повторять цикл для одной странички , поэтому если указать таблицу 3х3 то выводится будет последние 9 новостей а на другой странице цикл повторится уже для других новостей
@westsergius, для начала можно убрать if (have_posts()): и его endif; Затем можно добавить счетчик... $i=0 - перед while. А в цикле, например: PHP: if($i++ % 3 === 0) {/* добавляем разделитель */} Конкретнее, pls...
--- Добавлено --- может конечно и я с ошибками написал, но я только новичек не пинайте --- Добавлено --- может конечно и я с ошибками написал, но я только новичек не пинайте Код (Text): <div class="container"> <!---главная таблица--> <div class="content"> <table > <? $rows = 3; // количество строк, tr $cols = 3; // количество столбцов, td for ($tr=1; $tr<=$rows; $tr++){ echo '<tr>'; for ($td=1; $td<=$cols; $td++){ ?> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <? echo '<td>'?> <table > <tr> <td><div class="post"><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(array(100,150)); ?></a></div></td> </tr> <tr> <td><h2 class="post"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2></td> </tr> <tr> <td><div class="readmore"><a href="<?php the_permalink(); ?>">Читать далее</a></div></td> </tr> </table> <?$tr*$td .'</td>'; }?>
@westsergius, ругается на то, что не закрыты while и if. Ни у для внешнего for() закрывающей скобки не хватает. Это с точки зрения синтаксиса. А вот с точки зрения логики... Имеющийся вариант сколько "новостей" выводит для страницы? Девять? Если так, то без всяких внешних циклов можете добавить несколько (или одну) переменных-счетчиков для отслеживания количества выведенных новостей и добавления соответствующей разметки.
он как бы сам считет WP . там где-то внутри это считается и выводится, так то конечно я просто 9 раз бы прописал вывод новости и все но вот именно загвоздка в том что надо чтоб : таблица сначала открылась потом пошел цикл формирования строк далее внутри него уже цикл формирования столбцов внутри которого формируется вывод новости затем закрывается цикл столбцов затем строк и закрылась таблица --- Добавлено --- короче на странице нигде не указывается кол-во выводимых новостей . это указывается в движке в админ панели . как я понял скрипт смотрит какая страница открыта и выводит для нее содиржимое согласно заданным ранее параметрам
@westsergius, вот простенький пример, где после 3-й новости (тут их 4 запрашивается) воводится <hr>: PHP: <div class="sidebar"> <?php query_posts('cat=5&showposts=4'); ?> <?php // if (have_posts()): $i = 0; while (have_posts()) : the_post(); ?> <ul><li><a <?php if ($_SERVER['REQUEST_URI']==wp_make_link_relative(get_permalink())) { echo '';} else { echo 'href="'.wp_make_link_relative(get_permalink()).'"';} ?>><?php the_title(); ?></a></li></ul> <?php if(++$i % 3 === 0) { echo '<hr>'; } endwhile; // endif; ?> <?php wp_reset_query(); ?> <div class="arch-link"> <a href="/news/"><i class="fa fa-arrow-circle-right"></i>Архив новостей</a> </div> </div> --- Добавлено --- PS: То, что каждая новость выводится отдельным списком из одного элемента - это местные заморочки
А есть разница в том, где формировать требуемую для вывода выловленных функцией query_posts('cat=5&showposts=4'); новостей html+css разметку? --- Добавлено --- Нарисуйте, например, простой html код для вывода текста в требуемом виде. Посмотрите, что из него надо будет разместить до цикла (начало таблицы), что общего в выводе каждой новости (ячейка таблицы), какие значения будут принимать переменные-счетчики (та-же $i из примера) при выводе очередной новости (когда надо будет начинать строку, с завершающим строку тегом, кстати, не нужно заморачиваться - он не обязателен)...
так то все на правильном пути, но надо не в таблицу заворачивать, а в div, а уже их на странице распределять, и не больше 9-ти например, и обернуть в div поверх цикла, и будет все бодро. Если во вторник будет актуально, пишите в личку.
Тему можно закрывать , решилось все с помощью css дополнительно добавил адаптивность под телефоны-планшеты и да просто дивная верстка без таблиц