Приветствую!
Подскажите пожалуста как в главном цикле(не обязательно в этом, главное чтобы работало) :PHP код:передать в одну переменную все названия записей, а во вторую контент этих записей, чтобы потом вывести данные из переменой внужной части шаблона. Алогиртм примерно такой:
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php the_title(); ?>
<?php the_content(' '); ?>
<?php endwhile; ?>
<?php else : ?>
<p>Раздел находится на разработке</p>
<?php endif; ?>Код:В php не силен, подскажите как это можно сделать?начало цикла переменая1 += титл записи; переменая2 += контент записи; конец цикла
- 04.05.2013 19:20
- 04.05.2013 19:26
dionigi, можно использовать конструкцию вида:
PHP код:таким способом все данные которые вернет метод the_content(' ') запишутся в переменную $result и не выведутся на экранob_start();
the_content(' ');
$result = ob_get_clean();
- 04.05.2013 20:24
bizpapa, ок, работает! а что если нужно обрамить каждай контент поста в тег div с индивидуальным id? это возможно и как?
- 04.05.2013 20:40
Почему бы не воспользоваться массивами?
Код:Каждая новость будет иметь индекс начиная с нуля и по нарастающей.<?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <?php $title[] = the_title(); ?> <?php $content[] = the_content(' '); ?> <?php endwhile; ?> <?php else : ?> <p>Раздел находится на разработке</p> <?php endif; ?>
$title[0] - заголовок первой новости
$title[1] - заголовок второй новости
К тому же порядковый номер элемента массива можно сделать индивидуальным id, например, так
Код:Получится вот так<?php foreach($title as $id=>$titleValue) : ?> <?php echo '<div id="'.$id.'">'. $titleValue.'</div>; <?php endforeach; ?>
Код:<div id="0">Новость #1</div> <div id="1">Новость #2</div>
Ну и по аналогии с переменной $content - 04.05.2013 20:49
- 04.05.2013 20:57
bizpapa, так однозначно лучше:) Просто я не знаком с Wordpress.
Но я бы все таки сделал два массива
$post["TITLE"][the_ID()] = the_title();
$post["CONTENT"][the_ID()] = the_content(' ');
и в качестве дополнительного индекса добавлял бы ID новости, чтобы не плодить массивы под каждую новость ($post[0], $post[1], $post[2] и так далее). Ну это лично мое мнение, я программист начинающий, поэтому не уверен в преимуществе такого метода работы перед вашим. - 04.05.2013 21:33
OKyJIucT, тут суть в том, что в $post[0] будут лежать данные, которые касаются только определенного айдишником поста. В вашем примере в $post["TITLE"] будут тоже массивы $post["TITLE"][0], $post["TITLE"][1] и т.д. То есть практически это одно и тоже, а вот какую конструкцию удобней использовать, уже зависит от деталей поставленной задачи =)
Спасибо сказали:
OKyJIucT(04.05.2013), - 04.05.2013 21:53
OKyJIucT,bizpapa попробывал этот вариант:
Код:на странице выводит:<?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <?php $post[the_ID()]["TITLE"] = the_title(); $post[the_ID()]["CONTENT"] = the_content(' '); ?> <?php endwhile; ?> <?php else : ?> <p>Раздел находится на разработке</p> <?php endif; ?>
Код:т.е id и титл последней записи на сколько я понимаю. причем не используя цикл для вывода foreach, с ним страница вообще не отображается.77пример записи продукта3
тоже самое и используя вариант:Код:$post["TITLE"][the_ID()] = the_title(); $post["CONTENT"][the_ID()] = the_content(' ');
Последний раз редактировалось dionigi; 04.05.2013 в 21:59.
Спасибо сказали:
OKyJIucT(04.05.2013), - 05.05.2013 13:10
Все намного проще, возможно и код и грубый но зато раотает как часы! Может кому понадобиться:
Код:<?php if (have_posts()) : ?> <?php $count = 0; ?> <?php while (have_posts()) : the_post(); ?> <?php $count++; ?> <?php if ($count == 1) : ?> <input type="radio" name="tabs" id="tab-nav-<?php echo $count; ?>" checked> <label for="tab-nav-<?php echo $count; ?>"><?php the_title(); ?></label> <?php else : ?> <input type="radio" name="tabs" id="tab-nav-<?php echo $count; ?>"> <label for="tab-nav-<?php echo $count; ?>"><?php the_title(); ?></label> <?php endif; ?> <?php endwhile; ?> <?php rewind_posts(); ?> //тматываем цикл на начало <div class="tabs"> <?php while (have_posts()) : the_post(); ?> <?php the_content(); ?> <?php endwhile; ?> <?php else : ?> <p>Раздел находится на разработке</p> <?php endif; ?>
- 05.05.2013 13:18
dionigi, ну можно и без счетчика обойтись, просто рандомные цифры выводить, например, mt_rand(1,1000) будет выводить случайное число. Но лучше все же воспользоваться советом выше, и в качестве идентификатора брать id статьи the_ID()
Кроме того, можно делать вот так
Код:тогда и id никакой не понадобится<label> <input type="radio" name="tabs" checked><?php the_title(); ?> </label>
Тэги топика:
Похожие темы
Темы | Раздел | Ответов | Последний пост |
---|---|---|---|
передача информации через форму. Проблема в передаче переменной | Web программирование | 2 | 01.12.2012 12:26 |
как определять каждый второй проход в цикле | Web программирование | 5 | 11.10.2012 12:20 |
Как передать сайт на Telderi.ru | Вопросы от новичков | 14 | 28.08.2012 20:50 |
Как правильно передать сайт. | Оффтоп и свободные темы | 15 | 07.03.2012 19:24 |