Как передать переменной название записи в цикле?

(Ответов: 11, Просмотров: 1837)
Страница 1 из 2 12 Последняя
  1. Новичок Аватар для dionigi
    • Регистрация: 04.04.2013
    • Сообщений: 15
    • Репутация: 2
    Приветствую!

    Подскажите пожалуста как в главном цикле(не обязательно в этом, главное чтобы работало) :
    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; ?>
    передать в одну переменную все названия записей, а во вторую контент этих записей, чтобы потом вывести данные из переменой внужной части шаблона. Алогиртм примерно такой:
    Код:
    начало цикла
       переменая1 += титл записи;
       переменая2 += контент записи;
    конец цикла
    В php не силен, подскажите как это можно сделать?
    • 0
  2. Студент Аватар для bizpapa
    • Регистрация: 06.06.2011
    • Сообщений: 93
    • Репутация: 25
    • Webmoney BL: ?
    dionigi, можно использовать конструкцию вида:
    PHP код:
    ob_start();
    the_content(' ');
    $result ob_get_clean(); 
    таким способом все данные которые вернет метод the_content(' ') запишутся в переменную $result и не выведутся на экран
    • 0
  3. Новичок Аватар для dionigi
    • Регистрация: 04.04.2013
    • Сообщений: 15
    • Репутация: 2
    bizpapa, ок, работает! а что если нужно обрамить каждай контент поста в тег div с индивидуальным id? это возможно и как?
    • 0
  4. Sunshine reggae Аватар для OKyJIucT
    • Регистрация: 02.09.2011
    • Сообщений: 3,240
    • Репутация: 1830
    • Webmoney BL: ?
    Почему бы не воспользоваться массивами?


    Код:
    <?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
    • 0
  5. Студент Аватар для bizpapa
    • Регистрация: 06.06.2011
    • Сообщений: 93
    • Репутация: 25
    • Webmoney BL: ?
    Цитата Сообщение от OKyJIucT Посмотреть сообщение
    Почему бы не воспользоваться массивами?
    Только я бы массивы сделал бы следующим образом
    PHP код:
    $post[the_ID()]["TITLE"] = the_title();
    $post[the_ID()]["CONTENT"] = the_content(' '); 
    Так будет более все связано, the_ID() - id поста
    • 0
  6. Sunshine reggae Аватар для OKyJIucT
    • Регистрация: 02.09.2011
    • Сообщений: 3,240
    • Репутация: 1830
    • Webmoney BL: ?
    bizpapa, так однозначно лучше:) Просто я не знаком с Wordpress.


    Но я бы все таки сделал два массива


    $post["TITLE"][the_ID()] = the_title();
    $post["CONTENT"][the_ID()] = the_content(' ');


    и в качестве дополнительного индекса добавлял бы ID новости, чтобы не плодить массивы под каждую новость ($post[0], $post[1], $post[2] и так далее). Ну это лично мое мнение, я программист начинающий, поэтому не уверен в преимуществе такого метода работы перед вашим.
    • 0
  7. Студент Аватар для bizpapa
    • Регистрация: 06.06.2011
    • Сообщений: 93
    • Репутация: 25
    • Webmoney BL: ?
    OKyJIucT, тут суть в том, что в $post[0] будут лежать данные, которые касаются только определенного айдишником поста. В вашем примере в $post["TITLE"] будут тоже массивы $post["TITLE"][0], $post["TITLE"][1] и т.д. То есть практически это одно и тоже, а вот какую конструкцию удобней использовать, уже зависит от деталей поставленной задачи =)
    • 1

    Спасибо сказали:

    OKyJIucT(04.05.2013),
  8. Новичок Аватар для dionigi
    • Регистрация: 04.04.2013
    • Сообщений: 15
    • Репутация: 2
    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; ?>
    на странице выводит:
    Код:
    77пример записи продукта3
    т.е id и титл последней записи на сколько я понимаю. причем не используя цикл для вывода foreach, с ним страница вообще не отображается.

    тоже самое и используя вариант:
    Код:
    $post["TITLE"][the_ID()] = the_title();
    $post["CONTENT"][the_ID()] = the_content(' ');
    Последний раз редактировалось dionigi; 04.05.2013 в 21:59.
    • 1

    Спасибо сказали:

    OKyJIucT(04.05.2013),
  9. Новичок Аватар для dionigi
    • Регистрация: 04.04.2013
    • Сообщений: 15
    • Репутация: 2
    Все намного проще, возможно и код и грубый но зато раотает как часы! Может кому понадобиться:
    Код:
    <?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; ?>
    • 0
  10. Sunshine reggae Аватар для OKyJIucT
    • Регистрация: 02.09.2011
    • Сообщений: 3,240
    • Репутация: 1830
    • Webmoney BL: ?
    dionigi, ну можно и без счетчика обойтись, просто рандомные цифры выводить, например, mt_rand(1,1000) будет выводить случайное число. Но лучше все же воспользоваться советом выше, и в качестве идентификатора брать id статьи the_ID()


    Кроме того, можно делать вот так


    Код:
    <label>
    	<input type="radio" name="tabs" checked><?php the_title(); ?>
    </label>
    тогда и id никакой не понадобится
    • 0
Страница 1 из 2 12 Последняя

Похожие темы

Темы Раздел Ответов Последний пост
передача информации через форму. Проблема в передаче переменной
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

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры