2011-11-16 4 views
1

이것은 내 첫 번째 게시물이므로 가능한 한 철저하게 작성하려고 노력할 것입니다. 나는 또한 PHP에 매우 익숙하다.새 루프를위한 배열의 내용 저장

이것은 PODS CMS 플러그인을 사용하는 WordPress 사이트이므로, 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> 

Okkkay을 ... 그래서 내가 첫 번째 문제가 해결이! 그러나 그것은 두 번째 것을 가져온다.

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

여기에서 무슨 일이 일어나고 있는지 말하기 란 정말 어렵습니다. 불필요한 코드를 제거하려고합니다 (예 : $ image_med_url과 같이 많은 변수를 설정했지만 아무 것도 사용하지 마십시오) –

+0

두 번째 레코드라고 할 때 나는 여전히 약간 혼란 스럽습니다. 루프는'$ Record-> fetchRecord()'에서 다음 레코드를 가져올 것인가? –

답변

0

을 내가 어떤 문제를 볼 수 있다고 생각 : 나는 두 번째 이미지 필드를 필요로 OR을 <div>의 배열에 <li>에 배열 단지 첫 번째 이미지를 호출하고 바로 두 번째 이미지는 다음 중 하나를 생각하고 입니다. 두 번째 foreach 루프는 while 루프에서 이익을 얻지 못합니다. 따라서이 경로를 따라 가면 가져온 데이터를 다시 루프하는 것이 유일한 옵션입니다. 거의 항상 두 번째 루프에 필요한 코드를 원래 루프에 쓸 수있는 방법이 있으므로이 작업을 수행하지 않는 것이 좋습니다.

예를 들어 while 루프에 두 번째 foreach 루프를 통합하기 위해 코드를 다시 작성했습니다 (필요성을 무효화). 이렇게하면 모든 레코드에 $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; 
?> 
+0

좋아, 그래서 내 페이지에 코드를 놓기 만하면 무슨 일이 일어날 지 알기 시작했다. 그것은 작동하지 않는 것으로 보입니다 (분명히 $ 사진이 정의되지 않았다고 말한 것처럼)하지만 이벤트에서 오류가 발생하지 않았습니다. 코드를 살펴보면 두 번째 루프도 $ html보다 먼저 닫히기 때문에 while 문에서 이익을 얻지 못하고 있습니다. 맞습니까? –

+0

while 루프가 닫히는 위치를 보여주는 주석을 추가했습니다. '$ photo'는 그것이 선언되지 않았기 때문에 E_NOTICE (스크립트 실행을 멈추지 않을 것입니다)만을 생성합니다, 즉, PHP에서 기본값 인/'/ 0/false가 사용됩니다. 스크립트에 대해 오류를 살펴볼 것입니다. –

+0

나는 스크립트를 작동시키지 못하게하는 것을 볼 수는 없지만 그것을 테스트하기 위해 포드 CMS와 함께 wordpress를 설치하지 않았다. –