2012-10-24 5 views
0

내 필요에 맞게 페이지가 매겨진 간단한 갤러리를 적용했지만 예상대로 작동하지 않습니다. 일반적으로 첫 번째 "페이지"사진을 넣은 다음 일부 사진을 건너 뛰고 일부 사진을 건너 뜁니다.갤러리의 페이지 매김 오류

function makeGallery($path, $directory, $seo){ 
$dir = $path . "/" . $directory; 
$handle = opendir($dir); 
while ($file = readdir($handle)){ 
    if($file == '.' OR $file == '..' or $file == 'thumbs' or $file == '.DS_Store') 
     continue; 
    else 
     $result_array[]=$file; 
} 

$filecount = count(glob("" . $dir . "*.jpg")); 

closedir($handle); 
array_multisort($result_array, SORT_ASC); 
$rows = 3; 
$cols = 8; 

if(isset($_GET['page'])){ 
    $page = $_GET['page']; 
}else{ 
    $page = 0; 
} 

$num_pics = count($result_array); 
$cells = $rows * $cols; 
$pages = ceil($num_pics/$cells); 
$num_pages = $pages - 1; 
$output = array(); 
$slices = array(); 
$push = 0; 
$showpage = $page + 1; 

for($k=0;$k<$pages;$k++){ 
    array_push($slices, $push); 
    $push = $push + $cells; 
} 

for($k=0;$k<$pages;$k++){ 
    if($page == key($slices)){ 
     $output = array_slice($result_array, current($slices), $cells); 
    } 
    next($slices); 
} 

reset($output); 
print '<div class="container-fluid"> 
    <div class="row">'; 
print "<ul id='photoswipe' class='thumbnails'>"; 

for($i=0;$i<$rows;$i++){ 
    for($j=0;$j<$cols;$j++){ 
     if(current($output) != false){ 
      $value = current($output); 
      $parts = Explode('.', $value); 
     $title = $parts[count($parts) - 2]; 
     $parts = Explode('-', $title); 
     $title = $parts[1]; 
     if ($title == "") $title = $value; 
      print "<li class='box'><a title='$title' rel='group' class='thumbnails' href='$dir/$value'><img width='$width' height='inherrit' src='$dir/thumbs/$seo-$value' /></a></li>"; 
      next($output); 
     }else{ 
      print "</ul>"; 
     } 
    } 
} 


$ref = $_SERVER['PHP_SELF']; 

if($num_pages == '0'){ 
    print " "; 
    print " "; 
}elseif(($page == '0')||($page == '')){ 
    $next = $page + 1; 
    print " "; 
    print "<a id='next' href='$ref?page=$next'> </a>"; 
}elseif($page == $num_pages){ 
    $prev = $page - 1; 
    print "<a id='prev' href='$ref?page=$prev'> </a>"; 
    print " "; 
}else{ 
    $next = $page + 1; 
    $prev = $page - 1; 
    print "<a id='prev' href='$ref?page=$prev'> </a>"; 
    print "<a id='next' href='$ref?page=$next'> </a>"; 
} 

echo "<nav id='page-nav'> 
<a href='$ref?page=$next'></a> 
</nav></div></div>"; 
} 

확실 해요 바보 같은 버그가 있어야한다 : 여기

는 PHP 함수이다 (나는 infinitescroll을 사용하고 있습니다), 더 것들에 가서 다른 경우에는 다른 페이지를로드하지 않습니다 내가 발견하지 못했고 나는 경험 많은 PHP 프로그래머가 쉽게 찾을 수 있기를 바랍니다.

모든

답변

0

somone에 만약 감사합니다 (당신이 수를 24에서 직접 번호 49로 이동합니다 볼 수 있듯이 초상화 갤러리)

당신은 http://eikonabox.com/page/portrait.php 에 갤러리 (그 문제를) 볼 수 있었다 이런 식으로 해결했습니다.

function makeGallery($path, $directory, $seo){ 
$dir = $path . "/" . $directory; 

$filearray = array(); 
if ($fil = opendir($dir)) { 
    while (($file = readdir($fil)) !== false) { 
     if ($file != "." && $file != ".." && $file != "thumbs" && $file != ".DS_Store") { 
      $filearray[] = $file; 
      $page = empty($_GET['page']) ? 1 : $_GET['page']; 
      $num_per_page = 25; 
      $total_pages = ceil(count($filearray)/$num_per_page); 
     } 
    } 

array_multisort($filearray, SORT_ASC); 

print '<div class="container-fluid"> 
    <div class="row">'; 
print "<ul id='photoswipe' class='thumbnails'>"; 

for($i = ($page - 1) * $num_per_page; $i < $page * $num_per_page; $i++){ 
      $value = basename($filearray[$i]); 
      $parts = Explode('.', $value); 
     $title = $parts[count($parts) - 2]; 
     $parts = Explode('-', $title); 
     $title = $parts[1]; 
     if ($title == "") $title = $value; 
     if($value != "") 
       print "<li class='box'><a title='$title' rel='group' class='thumbnails' href='$dir/$value'><img width='$width' height='inherrit' src='$dir/thumbs/$seo-$value' /></a></li>"; 
} 
closedir($fil); 
} 

print "</ul>"; 

$ref = $_SERVER['PHP_SELF']; 

if($num_pages == '0'){ 
    print " "; 
    print " "; 
}elseif(($page == '0')||($page == '')){ 
    $next = $page + 1; 
    print " "; 
    print "<a id='next' href='$ref?page=$next'> </a>"; 
}elseif($page == $num_pages){ 
    $prev = $page - 1; 
    print "<a id='prev' href='$ref?page=$prev'> </a>"; 
    print " "; 
}else{ 
    $next = $page + 1; 
    $prev = $page - 1; 
    print "<a id='prev' href='$ref?page=$prev'> </a>"; 
    print "<a id='next' href='$ref?page=$next'> </a>"; 
} 

echo "<nav id='page-nav'> 
<a href='$ref?page=$next'></a> 
</nav></div></div>"; 
    }