Сохранение содержимого из массива для нового цикла - PullRequest
1 голос
/ 16 ноября 2011

Это мой первый пост, поэтому я постараюсь быть максимально тщательным. Я также очень плохо знаком с PHP.

Это сайт WordPress, использующий плагин PODS CMS, так что имейте в виду, что загрузчик изображений WordPress обеспечивает доступ к нескольким размерам загрузки одного отдельного изображения. Концепция заключается в том, что у меня есть группа данных под названием «команда», и у этой группы есть три поля - изображения, заголовок, биография. Я буду генерировать список миниатюр для каждого члена команды в одном, содержащем неупорядоченный список, а затем в другом, содержащем div, у меня будет увеличенная версия изображения, заголовка и биографии. Я в основном делаю область содержимого с вкладками, где миниатюры являются вкладками

Окончательный вывод HTML будет:

<ul>
<li> <img src="thumbnailurl.jpg"/></li>
<li> <img src="thumbnailurl2.jpg"/></li>
<li> <img src="thumbnailurl3.jpg"/></li>
</ul>
<div class="panes">
<div><h2>Title 1</h2> <p> BIO CONTENT </p></div>
<div><h2>Title 1</h2> <p> BIO CONTENT </p></div>
<div><h2>Title 1</h2> <p> BIO CONTENT </p></div>
</div>

В настоящее время у меня возникает проблема с тем, что я могу получить все URL-адреса изображений для первой записи, но когда дело доходит до второй записи во втором foreach, мне нужно повторно запустить массив для новой записи, но я не могу понять, как.

<?php
  $Record = new Pod('the_team');
  $Record->findRecords($orderby = 't.id DESC'); 
  $mylist=array();

  while ($Record->fetchRecord())
  {
    $image_array = $Record->get_field('photo');
    $title = $Record->get_field('name');
    $desc = $Record->get_field('bio');
    $id = $Record->get_field('id');
    $mylist[] = array('name' => $title, 'desc' => $desc, 'id'=> $id ); 
?>

<ul>
<?php
  foreach($image_array as $i => $image)
  {
    $image_thumb_url = wp_get_attachment_image_src( $image['ID'], 'thumbnail', false );
    $image_thumb_url = $image_thumb_url[0];

    $image_med_url = wp_get_attachment_image_src( $image['ID'], 'medium', false );
    $image_med_url = $image_med_url[0];

    $image_large_url = wp_get_attachment_image_src( $image['ID'], 'large', false );
    $image_large_url = $image_large_url[0];

    $image_full_url = wp_get_attachment_image_src( $image['ID'], 'full', false );
    $image_full_url = $image_full_url[0];
?>
  <li>
    <a href="<?php echo $image_large_url; ?>">
      <img src="<?php echo $image_thumb_url; ?>" />
    </a>
  </li>
<?php } ?>
<?php } ?>
</ul>

<div class="panes">
<?php  
  foreach ($mylist as $person)
  { ?>
    <div class="team-member" id="member<?php echo $person['id']; ?>">
      <h2><?php echo $person['name']; ?></h2>
      <?php echo $person['desc']; ?>
      <a href="<?php echo $person['photo'];  ?>">
        <img src="<?php echo $person['photo'];   ?>" />
      </a>
<?php } ?>
</div>
</div>
* * 1010

Okkkay .. Итак, я решил первую проблему !!! Но это поднимает второй. Я думаю, мне либо понадобится второе поле изображения ИЛИ вызовите только первое изображение в массиве в <li> и просто второе изображение в массиве для <div>:

<?php

$Record = new Pod('the_team');
$Record->findRecords($orderby = 't.id DESC');
$mylist=array();
$cnt = 0;
?>
   <ul class="tabs">
<?php 
while ($Record->fetchRecord()) :
  $mylist[$cnt] = array(
    'name' => $Record->get_field('name'),
    'desc' => $Record->get_field('bio'),
    'id'=> $Record->get_field('id')
  );
  ?>
  <?php
  $image_array = $Record->get_field('photo');
  foreach($image_array as $i => $image) :
    $image_thumb_url = wp_get_attachment_image_src( $image['ID'], 'thumbnail', false );
    $mylist[$cnt]['img_thumb'] = $image_thumb_url[0];

    $image_med_url = wp_get_attachment_image_src( $image['ID'], 'medium', false );
    $mylist[$cnt]['img_med'] = $image_med_url[0];

    $image_large_url = wp_get_attachment_image_src( $image['ID'], 'large', false );
    $mylist[$cnt]['img_large'] = $image_large_url[0];

    $image_full_url = wp_get_attachment_image_src( $image['ID'], 'full', false );
    $mylist[$cnt]['img_full'] = $image_full_url[0];
  ?>
    <li>
      <a href="#">
        <img src="<?php echo $image_thumb_url[0]; ?>" />
      </a>
    </li>
  <?php endforeach; ?>
<?php
  $cnt++;
endwhile;
?>  </ul>

  <div class="panes">
  <?php foreach ($mylist as $person) : ?>
    <div class="team-member" id="member<?php echo $person['id']; ?>"><div id="member-info"><h2>Meet <?php echo $person['name']; ?></h2>
      <?php echo $person['desc']; ?></div>
      <a href="<?php echo $person['img_large'];  ?>" rel="prettyPhoto">
        <img src="<?php echo $person['img_med'];   ?>" style="float:left" />
      </a>
    </div>
  <?php endforeach; ?>
  </div>

1 Ответ

0 голосов
/ 16 ноября 2011

Думаю, я понимаю, в чем твоя проблема.Ваш второй цикл foreach не извлекает выгоду из цикла while, так как он является единственным вариантом, если вы будете следовать по этому пути для повторного просмотра извлеченных данных.Я бы не рекомендовал делать это, так как почти всегда можно написать код, необходимый для второго цикла, в исходный цикл.

В качестве примера я переписал ваш код для включениявторой foreach цикл в цикле while (отрицая его необходимость).Таким образом, каждая запись имеет новую запись в $html и $html2.После прохождения цикла у вас есть две переменные, которые вы можете объединить для получения полного HTML, который вы ищете.

<?php
$Record = new Pod('the_team');
$Record->findRecords($orderby = 't.id DESC');

// Custom variables 
$html = "<ul>\n";
$html2 = "";
$image_type=array('thumbnail','medium','large','full');

while ($Record->fetchRecord()) {

    $image_array = $Record->get_field('photo');
    $title = $Record->get_field('name');
    $desc = $Record->get_field('bio');
    $id = $Record->get_field('id');

    foreach($image_array as $i => $image) {

        foreach ($image_type as $type) {
            $image_temp =  wp_get_attachment_image_src( $image['ID'], $type , false );
            $image_url[$type] = $image_temp[0];
        } # End of Foreach loop

        // Create List HTML in primary output variable
        $html .= "<li>\n".
        "<a href=\"" . $image_url['large'] ."\">\n".
        "<img src=\"" . $image_url['thumbnail'] ."\" />\n".
        "</a>\n".
        "</li>\n";
    } #End of foreach loop

    // Create User HTML in secondary output variable
    $html2 .= "\t<div class=\"team-member\" id=\"member" . $id . ">\n".
              "<h2>" . $title . "</h2>\n".
              $desc . "\n".
              "<a href=\"" . $photo . ">\n". # $photo is not declared in this code (will error)
              "<img src=\"" . $photo . " />\n". # as above comment
              "</a>\n";
              "</div>\n";
} # End of while loop

// Wrap up the list elements, concat the secondary HTML.
$html .= "</ul>\n\n".
         "<div class=\"panes\">\n".
         $html2 . "\n".
         "</div>\n";

echo $html;
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...