1

初めての投稿ですので、出来るだけ詳しく書いていきます。私はPHPも初めてです。

これは、PODS CMS プラグインを使用するワードプレス サイトです。ワードプレスの画像アップローダーを使用すると、複数のサイズの 1 つの画像アップロードにアクセスできることに注意してください。概念は、「チーム」と呼ばれるデータのグループがあり、このグループには画像、タイトル、バイオの 3 つのフィールドがあるということです。各チーム メンバーのサムネイルのリストを生成します。1 つは順序付けされていないリストを含み、もう 1 つは 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 を取得できることですが、2 番目の foreach の 2 番目のレコードになると、新しいレコードの配列を再実行する必要がありますが、わかりませんどのように。

<?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>

わかりました..だから私は最初の問題を解決しました!!! しかし、それは2番目のものをもたらします。私は、2番目の画像フィールドが必要になるか、配列の最初の画像だけを呼び出し、配列<li>の2番目の画像だけを呼び出すと考えてい<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>
4

1 に答える 1

0

私はあなたの問題が何であるかを見ることができると思います。2 番目foreachのループはループの恩恵を受けません。そのためwhile、このパスをたどる場合の唯一のオプションは、フェッチされたデータを再ループすることです。2 番目のループに必要なコードを元のループに書き込む方法はほぼ常にあるため、これを行うことはお勧めしません。

この例として、2 番目のforeachループを while ループに組み込むようにコードを書き直しました (その必要性を否定します)。このように、すべてのレコードに と への新しいエントリが$htmlあり$html2ます。ループすると、探している完全な html を生成するために連結できる 2 つの変数が得られます。

<?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;
?>
于 2011-11-16T03:59:44.777 に答える