[도움 요청] 멀티갤러리 게시판 구현에 있어서 list.skin.php에 루프문이 하나 필요합니다. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

[도움 요청] 멀티갤러리 게시판 구현에 있어서 list.skin.php에 루프문이 하나 필요합니다. 정보

[도움 요청] 멀티갤러리 게시판 구현에 있어서 list.skin.php에 루프문이 하나 필요합니다.

첨부파일

gallery_multi01.zip (40.9K) 4회 다운로드 2005-06-30 21:58:02

본문

[위는 ... 먼저 작업중인 스킨의 스크린 샷과 그에 대한 내용입니다.]



[제작정보 - 버젼 4.00.17 버젼의 기본게시판에 기초]

미완성입니다. 그냥 이걸 다운받으셔서 사용하셔도 무방하나
list.skin.php에서 원하는갯수만큼의 파일을 불러오는 문제를 해결하여야만 보다 완벽한 멀티갤러리가 될거 같습니다.
아래 내용은 제작과 관련해서 나름대로 현재 구현되는 방법에 관한 설명과 질의 내용입니다.


- 기존기능에 충실하면서 만들었습니다. 관리자께서 이렇게도 활용하라고 그래서 만드신것인지,
  가변파일기능을 최대한 활용하여 멀티 이미지 뷰 기능을 구현하였습니다.(대단한 g4 ~~~)
  따라서 초보자도 쉽게 코드를 보시고 디자인을 수정하실수 있습니다.
  별도의 추가 변수나 복잡한 루프같은건 없습니다. 응용해서 보다 나은걸 만들어 보시라고 그렇게 만들었습니다.

- 그리고 무엇보다도 장점은 특별히 db를 건드리는 코드같은건 없으므로
  db백업이나 변환시 그리고 게시판 추가또는 삭제시 그냥 일반적인 방법이 적용되므로
 별다른 영향을 받지 않고 사용가능합니다.

-또한 나중의 일입니다만, 일반 갤러리게시판에 등록된 개개의 파일 게시물을 멀티갤러리게시판으로
  이미지를 합쳐서 이동또는 복사해서 쉽게 옮길수 있는 방법이 가능하리라 봅니다.
 왜냐하면 기존의 db환경이나 코드환경이 일정하기 때문에 충분히 가능할듯 합니다.


[list.skin.php]
- 리스트화면에서 원하는 한게시물에 등록된 이미지를 원하는 만큼 한줄로 표시 (현재 안됨. 수동으로 조작해야함)
- 리스트에 등록된 이미지 아래 파일 설명글 나타남.

[view.skin.php]
- 한화면에서 가로줄에 표시되는 이미지 수를 설정(동시에 게시판설정에서 '이미지폭크기' 조정)함으로써
  다양한 화면의 구현이 가능합니다.

[write.skin.php]
- 건드린것은 없고, 파일등록시 '파일설명글'이 올라올수 있도록 게시판환경에서 지정해주면 됩니다.


[추가] bstyle.css 파일
- 게시판에 적용되는 스타일 쉬트값 설정



------ {현재 설정된 환경}-------------------------
게시판의 가로규격이 800px 인경우로 가정하여 작업됨
---------------------------------------------------

1. 게시판설정 환경
    - 파일설명...체크
    - 가로이미지수 : 1개로 설정
    - 이미지 폭크기 : 200 (픽셀값)

2. list.skin.php 환경 (70~74라인)

<?
$img_count = '6'; // 게시물 한건당 이미지 출력갯수  ######## 사용이 안됨 {루프가 필요함} #######
$img_width = '100'; // 이미지 개당 가로크기
$img_height = '80'; // 이미지 개당 세로크기
?>

3. view.skin.php 환경 (116번 라인)

$n = 4; // 한줄당 출력 이미지수 (뷰화면)






------ {응용 적용 환경}-------------------------
게시판의 가로규격이 650px 인경우 최적환경설정
---------------------------------------------------

1. 게시판설정 환경
    - 파일설명...체크
    - 가로이미지수 : 1개로 설정
    - 이미지 폭크기 : 200 (픽셀값 조정)

2. list.skin.php 환경 (70~74라인)

<?
$img_count = '6'; // 게시물 한건당 이미지 출력갯수  ######## 사용이 안됨 {루프가 필요함} #######
$img_width = '80';  // 이미지 개당 가로크기
$img_height = '60';  // 이미지 개당 세로크기
?>

3. view.skin.php 환경 (116번 라인)

$n = 4; // 한줄당 출력 이미지수 (뷰화면)






################## 도움을 요청하는 내용입니다 #########################

현재 위와 같은 멀티답사기 형태의 갤러리 게시판을 작업중입니다.
지금까지의 문제점은 ... '위 그림에서 노란색으로 마킹한 부분입니다'

list.skin.php 에서 $img_count 변수에 지정한 리스트화면에서 '한줄당 이미지출력갯수'에 대한
루프문이 만들어 지지 못해서 이미지 갯수를 줄이려면
list.skin.php 에서 파일갯수를 임의로 수작업으로 넣었다 뺏다 해야 한다는것입니다.


모든 작업을 다 마쳤는데 그리고 저는 현재 그냥 사용을 합니다만,
스킨으로 올리기에는 위 list.skin.php에서 $img_count 변수의 루프문을 구현해서
보여지는 파일의 갯수를 조정할수 있어야 할거 같습니다.


list.skin.php 라인 '68~185'라인을 보시고 어떻게해야 구현이 가능할지
실력있으신 분들의 도움을 꼭 부탁드립니다.

나같은 초보자도 쉽게 디자인작업이며, 코드수정이 가능하도록 하고자
기본게시판 환경을 최대한 활용해서 나름대로 구현을 했습니다만,
실력이 미진해서 간단한 (or 그렇지 않은) 루프환경하나 만들어 낼수가 없군요.

도움을 부탁드립니다.
  • 복사

댓글 전체

아 참,,,그리고요  $href 부분과 $checkbox부분도 위로 올리셔야 합니다.  위 소스에 다시 올려놓았습니다.
이미지에 $href도 제가 주무르다 지워졌습니다...^^;;
다시 복사하실 필요없이 참고하시어 수정하심 될겁니다.
리플 감사드립니다..근데....무수한 에러가 발생이 하네요..한번더 부탁드립니다.


말씀하신대로 gd가 아니라 리스트상에서 불러오는데 시간이 걸릴수가 있습니다.

근데 개인적인 생각에... 부가적으로 이와같이 기본코드로 작성된 멀티게시판이면,
추후에 나중의 일입니다만, 일반 갤러리게시판에 등록된 개개의 파일 게시물을 멀티갤러리게시판으로
이미지를 합쳐서 이동또는 복사해서 쉽게 옮길수 있는 방법의 구현도 가능하리라 봅니다.
왜냐하면 기존의 db환경이나 코드환경이 일정하기 때문에 충분히 가능할듯 합니다.

그리고 개인적으로 지식이 짧아서 복잡한 코드의 구현은 스킨작업하는 제 입장에서는 꽤나 벅찬일이라서
나같은 초보입장에서 생각을 해서 나름대로 만들어 보고 있습니다.

기타 이런저런 이유로 이와같은 구조의 멀티갤러리(답사기)를 만든것이므로 충분한 조언을 요청드립니다.
헉~ PS) 쓰는 도중에 글 써셨나 봅니다.....그냥 긁어다(Ctrl+C) 하시면 HEREDOC 과 HEREDOC;  뒷부분에
공백이 붙어 가니깐....그거 다 지우셔야 합니다.
<!------------ 멀티 이미지 출력 시작------------------------//-->
<?
$img_count = '4'; // 게시물 한건당 이미지 출력갯수
$img_width = '100'; // 이미지 개당 가로크기
$img_height = '80'; // 이미지 개당 세로크기
$Noimg = "$board_skin_path/img/no_image.gif";  // 노이미지
$s_content =  array(); // 각 파일설명
$img =  array(); // 이미지명

for ($i=0; $i<count($list); $i++)
{

    $total_img_count = $list[$i][file][count];
   
    // 지정한갯수보다 클경우 지정갯수로
    if  ($total_img_count > $img_count) { $total_img_count = $img_count; }

    $title = "클릭하시면 더 많은 사진을 보실수 있습니다.";
    $content = cut_str(get_text($list[$i][wr_content]), 80);

    $href = "$g4[bbs_path]/board.php?bo_table=$bo_table&wr_id={$list[$i][wr_id]}";
    $view_href = "$g4[bbs_path]/board.php?bo_table=$bo_table&wr_id={$list[$i][wr_id]}";
    if ($is_admin)
        $view_href = "<a href='$g4[bbs_path]/board.php?bo_table=$bo_table&wr_id={$list[$i][wr_id]}'>";

    $checkbox = "";
    if ($is_checkbox)
        $checkbox = "<input type=checkbox name=chk_wr_id[] value='{$list[$i][wr_id]}'>";
    if ($is_admin)
        $view_href = "{$g4[bbs_path]}/board.php?bo_table=$bo_table&wr_id={$list[$i][wr_id]}";

echo <<<HEREDOC
    <tr>
    <td width="" align='left' valign="top">
<table width="100%" cellpadding="2" cellspacing="0" border="0" style='border:1px solid #cccccc'>
<tr><td align='left' height='24' bgcolor='#efefef'>&nbsp;{$checkbox}&nbsp;<a class='b1' href='{$view_href}'>{$list[$i][subject]}</a></td>
        </tr>
        <tr>
        <td>
        <table width="100%" cellpadding="10" cellspacing="0" border="0" style='border:0px solid #cccccc'>
<tr>
HEREDOC;


    for ($k=0; $k < $total_img_count; $k++)    // 이미지파일 갯수만큼 루트
    {

    $s_content[$k] = cut_str(get_text($list[$i][file][$k][content]), 12, '...'); //-- 각각의 사진설명글 줄이기

    $img[$k] = "$g4[path]/data/file/$bo_table/".urlencode($list[$i][file][$k][file]); // 각각의 이미지 저장

    if (!file_exists($img[$k]) || !$list[$i][file][$k][file]) {    // 이미지가 없다면 노이미지 저장
        $img[$k] = "$board_skin_path/img/no_image.gif";
}

echo <<<HEREDOC
        <td align='center'><a class='b1' href='{$view_href}'><img src="{$img[$k]}" width="{$img_width}" height="{$img_height}" style="border:2px solid #666666">
<br>{$s_content[$k]}</a>
        </td>
HEREDOC;

}

if ($total_img_count < $img_count) {  // 지정된 갯수보다 적으면  나머지를 노이미지로...

    for ($k=$total_img_count; $k< $img_count ; $k++)
    {
echo <<<HEREDOC
        <td align='center'>
<img src="{$Noimg}" width="{$img_width}" height="{$img_height}" style="border:2px solid #666666">
<br>&nbsp;
        </td>
HEREDOC;
  }
}
   

echo <<<HEREDOC
</tr>
</table>

</td></tr>
        </table><br>

    </td>
</tr>
HEREDOC;
}

if ($i == 0)
    echo "<tr><td colspan='$board[bo_gallery_cols]' height=50 align=center>게시물이 없습니다.</td></tr>";
?>
</form>
</table>
<!------------ 멀티 이미지 출력 끝------------------------//-->

근데  이 답사기스킨이 GD 가 아니네요...  이미지 파일 용량이 크면 리스트에 불러오는데 시간이 많이 걸리지 싶습니다.

PS) 아, 참 이거 긁어다 갖다 붙이시면 HEREDOC과 HEREDOC; 뒷부분에 공백이 다 붙으니깐  공백 삭제하셔야 될겁니다.
$list[$i][file][count] 를 이용하여 등록된 사진갯수를  얻어셔서요 ...해당 게시판 환경설정에서 지정한 가로갯수보다
적으면 적은만큼 루프돌리시고 많은면 지정된 갯수만큼만 루프를 돌리심 될겁니다.
[ 아래 내용이 루프문이 구현이 되지않은 list.skin.php 내용입니다. ]


<?
$img_count = '6'; // 게시물 한건당 이미지 출력갯수  ######## 사용이 안됨 {루프가 필요함} #######
$img_width = '100'; // 이미지 개당 가로크기
$img_height = '80'; // 이미지 개당 세로크기
?>


<?
for ($i=0; $i<count($list); $i++)
{
    $title = "클릭하시면 더 많은 사진을 보실수 있습니다.";
    $content = cut_str(get_text($list[$i][wr_content]), 80);
    $s_content = cut_str(get_text($list[$i][file][0][content]), 12, '...'); //-- 사진설명글 줄이기


// --- {원하는 파일갯수만큼 추가또는 삭제하세요 - 루프가 필요함} -------------
    $img1 = "$g4[path]/data/file/$bo_table/".urlencode($list[$i][file][0][file]);
    $img2 = "$g4[path]/data/file/$bo_table/".urlencode($list[$i][file][1][file]);
    $img3 = "$g4[path]/data/file/$bo_table/".urlencode($list[$i][file][2][file]);
    $img4 = "$g4[path]/data/file/$bo_table/".urlencode($list[$i][file][3][file]);
    $img5 = "$g4[path]/data/file/$bo_table/".urlencode($list[$i][file][4][file]);
    $img6 = "$g4[path]/data/file/$bo_table/".urlencode($list[$i][file][5][file]);

    if (!file_exists($img1) || !$list[$i][file][0][file]) {
        $img1 = "$board_skin_path/img/no_image.gif";
}

if (!file_exists($img2) || !$list[$i][file][1][file]) {
        $img2 = "$board_skin_path/img/no_image.gif";
}

if (!file_exists($img3) || !$list[$i][file][2][file]) {
        $img3 = "$board_skin_path/img/no_image.gif";
}

if (!file_exists($img4) || !$list[$i][file][3][file]) {
        $img4 = "$board_skin_path/img/no_image.gif";
}

if (!file_exists($img5) || !$list[$i][file][4][file]) {
        $img5 = "$board_skin_path/img/no_image.gif";
}


if (!file_exists($img6) || !$list[$i][file][5][file]) {
        $img6 = "$board_skin_path/img/no_image.gif";
}

    $href = "$g4[bbs_path]/board.php?bo_table=$bo_table&wr_id={$list[$i][wr_id]}";
    $view_href = "$g4[bbs_path]/board.php?bo_table=$bo_table&wr_id={$list[$i][wr_id]}";
    if ($is_admin)
        $view_href = "<a href='$g4[bbs_path]/board.php?bo_table=$bo_table&wr_id={$list[$i][wr_id]}'>";

    $checkbox = "";
    if ($is_checkbox)
        $checkbox = "<input type=checkbox name=chk_wr_id[] value='{$list[$i][wr_id]}'>";
    if ($is_admin)
        $view_href = "{$g4[bbs_path]}/board.php?bo_table=$bo_table&wr_id={$list[$i][wr_id]}";


    echo <<<HEREDOC
<tr>
    <td width="" align='left' valign="top">

        <table width="100%" cellpadding="2" cellspacing="0" border="0" style='border:1px solid #cccccc'>
<tr>
            <td align='left' height='24' bgcolor='#efefef'>
&nbsp;{$checkbox}&nbsp;<a class='b1' href='{$view_href}'>{$list[$i][subject]}</a>
</td>
        </tr>
        <tr><td>
// --- {원하는 파일갯수만큼 추가또는 삭제하세요 - 루프가 필요함} -------------
        <table width="100%" cellpadding="10" cellspacing="0" border="0" style='border:0px solid #cccccc'>
<tr>
            <td align='center'>
<a class='b1' href="{$href}"><img src="{$img1}" width="{$img_width}" height="{$img_height}" style="border:2px solid #666666">
<br>{$s_content}</a>
</td>
<td align='center'>
<a class='b1' href="{$href}"><img src="{$img2}" width="{$img_width}" height="{$img_height}" style="border:2px solid #666666">
<br>{$s_content}</a>
</td>
<td align='center'>
<a class='b1' href="{$href}"><img src="{$img3}" width="{$img_width}" height="{$img_height}" style="border:2px solid #666666">
<br>{$s_content}</a>
</td>
<td align='center'>
<a class='b1' href="{$href}"><img src="{$img4}" width="{$img_width}" height="{$img_height}" style="border:2px solid #666666">
<br>{$s_content}</a>
</td>
<td align='center'>
<a class='b1' href="{$href}"><img src="{$img5}" width="{$img_width}" height="{$img_height}" style="border:2px solid #666666">
<br>{$s_content}</a>
</td>
<td align='center'>
<a class='b1' href="{$href}"><img src="{$img6}" width="{$img_width}" height="{$img_height}" style="border:2px solid #666666">
<br>{$s_content}</a>
</td>
</tr>
</table>

</td></tr>
        </table><br>

    </td>
</tr>
HEREDOC;
}



if ($i == 0)
    echo "<tr><td colspan='$board[bo_gallery_cols]' height=50 align=center>게시물이 없습니다.</td></tr>";
?>
</form>
</table>

<!------------ 멀티 이미지 출력 끝 --------------//--------->
© SIRSOFT
현재 페이지 제일 처음으로