갤러리 스킨용 카테고리(분류)별 최신글 - 데모(수정) > 그누4 스킨

그누4 스킨

스킨의 저작권은 해당 스킨 제작자님께 있으며, 그누보드의 저작권과 다를 수 있습니다.
스킨 다운로드시 좋아요와 감사의 코멘트를 남기시면 제작자에게 큰 힘이됩니다. ^^y
그누보드와 관련이 있지만 스킨과 빌더가 아니면 플러그인 게시판에 올려주세요.

갤러리 스킨용 카테고리(분류)별 최신글 - 데모(수정) 정보

최신글 갤러리 스킨용 카테고리(분류)별 최신글 - 데모(수정)

첨부파일

latest.skin.php (7.1K) 250회 다운로드 2006-04-09 18:18:17

본문

하나의 게시판에 분류별로 갤러리를 생성해서 사용하는 경우를 염두에 두고 작업하였습니다.
여러 고수님들의 주옥같은 소스코드를 병합한 정도로 보시면 좋을듯 합니다.

도와주신분들께 감사의 말씀을 드립니다. ^^
++++++++++++++++++++++++
네잎클로버님 - 카테고리(분류) 뽑기, 카테고리(분류)별 최신이미지 하나씩 불러오기 밤새시며 만들어주셨습니다.
//네잎클로버님 카테고리 목록뽑기 원본 http://www.sir.co.kr/bbs/tb.php/g4_skin/1744
//네잎클로버님 카테고리 최신이미지1 뽑기 http://www.sir.co.kr/bbs/tb.php/g4_qa/18200
+
관리자님 gd_gallery 썸네일 생성부분 응용했습니다(네잎클로버님, 유창화님, Daeng`2님 팁 활용 카테고리별 최신 목록에 해당되는 이미지일때만 가로, 세로 최대 사이즈 제한하며 비율 유지하도록 수정)
+
유창화님 사용자 캐시의 영향을 받지않도록 data 폴더의 원본 파일명과 동일하게 thumb폴더에 썸네일 생성하도록 만들어주셨습니다.
++++++++++++++++++++++++

여분필드 사용,
bo_1 썸네일 사이즈 최대치 제한
bo_2 썸네일 퀄리티
bo_10 카테고리(분류)별 간단한 설명을 넣을수 있도록 했습니다.
필드속성을 text로 변경, 파이프문자를 구분자로 차례대로 설명을 넣으시면 됩니다.
예) 갤러리1 소개|갤러리2 소개|갤러리3 소개|갤러리4 소개| ~~

호출방법은 일반 최신글과 동일합니다.

그외 링크1 에 보여지는 라이브러리파일, 전체 호출파일등 모든 관련소스는 링크2 에 올려놓았습니다.

데모???

* 아직 완성된 것이 아니며 회원님들 의견을 듣고자 하는 의미가 더욱 크다는 말씀입니다.

* 이미지 혹은 장식적 요소는 알아서 하시면 될듯합니다.

* 시간 되시면 링크를 방문에 보시고, 조언 주시면 고맙겠습니다.

* 끝으로 데모라고 붙이지 않더라도 제가 40대 초보란 사실을 아시는분은 다 아십니다.ㅎㅎ

도움을 주신 분들께 거듭 감사의 말씀을 드립니다.

++++++++++++++++++++++++

수정 2006년 4월 9일 일요일 오후 2:25:10

# 당일 등록글은 시간으로 표시하고 년,월,일 혹은 월,일 선택가능, common.lib.php 참조
# 헐랭이님 basic2 참조 여분필드 bo_3에서 리스트 분류 세로갯수, 최신글 분류 세로갯수, 최신글 줄당 이미지갯수 설정(기본 5,2,6 사용자에 맞게 수정 구분자 ",")

추가
전체 게시물(답글, 코멘트 제외) 카운트

기타
소소한 부분 좀더 최적화 하려고 노력했습니다.

좀더 쉽게 보시고 조언해 주십사 하는 의미에서 latest.skin.php 소스코드를 아래에 붙입니다.

++++++++++++++++++++++++
latest.skin.php 전체

<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
/*
# 네잎클로버님 카테고리 목록뽑기 원본 http://www.sir.co.kr/bbs/tb.php/g4_skin/1744
# 네잎클로버님 카테고리 최신이미지1 뽑기 http://www.sir.co.kr/bbs/tb.php/g4_qa/18200
# 카테고리별 최신이미지1, 카테고리 이름, 게시물 카운터, 새이미지 표시

# 유창화님 사용자 캐시의 영향을 받지않도록 thumb폴더에 원본파일명과 같은 이름의 썸네일 생성
# Daeng`2님 팁 ㅤㅆㅔㅁ네일 가로,세로 최대 사이즈 bo_1값으로 제한해서 썸네일 생성
# gd_gallery - list.skin.php GD Lib 참조, 최신 목록에 해당되는 경우에만 썸네일 생성

# 당일 등록글은 시간으로 표시하고 년,월,일 혹은 월,일 선택가능, common.lib.php 참조
# 헐랭이님 basic2 참조 여분필드 bo_3에서 리스트 분류 세로갯수, 최신글 분류 세로갯수, 최신글 줄당 이미지갯수 설정(기본 5,2,6 사용자에 맞게 수정 구분자 ",")
# 여분필드 bo_10, 최신글 분류설명 입력(필드타입 text로 변경, 분류와 같은 순서로 입력 구분자 "|"
# 비어있는 테이블 셀 채우기(gd_gallery 참조)
*/
if (!$board['bo_1']) alert("갤러리({$bo_table}) 설정 : 여분 필드1 에 썸네일 이미지 최대사이즈를 설정하십시오. (픽셀 단위)");
if (!$board['bo_2']) alert("갤러리({$bo_table}) 설정 : 여분 필드2 에 썸네일 이미지의 질(quality)을 비율로 설정하십시오. (100 이하)");
if (!$board['bo_3']) alert("갤러리({$bo_table}) 설정 : 여분 필드3 에 줄바꿈(리스트 분류,최신글 분류,최신글 이미지) 숫자를 연이어 입력하세요.(5,2,6 처럼 구분자, 포함 모두입력후 추후 조정하십시오.)");

if (!function_exists("imagecopyresampled")) alert("GD 2.0.1 이상 버전이 설치되어 있어야 사용할 수 있는 갤러리 게시판 입니다.");

$data_path = $g4['path'] . "/data/file/$bo_table";
$thumb_path = $data_path . '/thumb';

if (!is_dir($thumb_path)) {
@mkdir($thumb_path, 0707);
@chmod($thumb_path, 0707);
}

//분류목록 세로 갯수, 필드하나로 모든칼럼수 설정
$cols_num = explode(",",$board['bo_3']);
$mod = $cols_num[1];//분류 세로칼럼, bo_3 두번째 사용 5,2,6
//$mod = 2;//직접입력
$td_width = (int)(100 / $mod);

$row = sql_fetch(" SELECT bo_subject, bo_category_list FROM $g4[board_table] WHERE bo_table = '$bo_table' ");

$array = explode("|", $row['bo_category_list']); //분류 구분

$str = "";
//if (count($array) > 0) {

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

if ($i > 0 && $i % $mod == 0){
$str .=  "</tr><tr>";
}

$ca_sub = "{$array[$i]}";//분류명

$array1  = explode("|", $board[bo_10]);//분류 설명
$ca_txt = "{$array1[$i]}";//설명

if (trim($array[$i]))  {//공백제거
//카테고리별 게시물수 체크, 분류별 최신이미지, 답글 및 코멘트 제외
$row1 = sql_fetch(" SELECT count(*) as cat_cnt FROM {$g4[write_prefix]}{$bo_table} WHERE ca_name = '$array[$i]' and wr_reply = '' and wr_is_comment = '' ");

$sql = " SELECT * FROM {$g4[write_prefix]}{$bo_table} WHERE ca_name = '$array[$i]' and wr_reply = '' and wr_is_comment = '' order by wr_id desc limit 0,1 ";
 
$row2 = sql_fetch_array(sql_query($sql));

$sql3 = " select * from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$row2[wr_id]' order by bf_no ";
$result3 = sql_query($sql3);
$row3 = sql_fetch_array($result3);
 
$file = $row3['bf_file'];

//분류별 최신 이미지 목록에 해당되는 경우에만 썸네일 생성
$img = "<img src='$latest_skin_path/img/noimage.gif' border='0' title='이미지 없음'>"; 

$file_dir = $data_path .'/'. $file;

if (preg_match("/\.(jp[e]?g|gif|png)$/i", $file) && file_exists($file_dir)){
//$thumb = "$thumb_path/".urlencode($row3['bf_file']);//공백문자 변형(+, %2B) 파일명으로 생성됨
$thumb = $thumb_path .'/'. $file;
if (!file_exists($thumb)) {

          $size = getimagesize($file_dir);
          if ($size[2] == 1)
            $src = imagecreatefromgif($file_dir);
          else if ($size[2] == 2)
            $src = imagecreatefromjpeg($file_dir);
          else if ($size[2] == 3)
            $src = imagecreatefrompng($file_dir);
          else
            break;
//가로,세로 최대사이즈 제한, Daeng`2님 팁
          if ($size[0] >= $size[1]) {
            $rate = $board[bo_1] / $size[0];
            $width = $board[bo_1];
            $height = (int)($size[1] * $rate);
            }
            else {
            $rate = $board[bo_1] / $size[1];
            $width = (int)($size[0] * $rate);
            $height = $board[bo_1];
            }
            $dst = imagecreatetruecolor($width, $height);
            imagecopyresampled($dst, $src, 0, 0, 0, 0, $width, $height, $size[0], $size[1]);
            imagepng($dst, $thumb, $board['bo_2']);
            chmod($thumb, 0707);
}

if (file_exists($thumb))
$img = "<img src='$thumb' border='0' title='" . $row3['bf_source'] . "'>"; 
          //$img = "$thumb";
  }
//썸네일 생성 끝

$icon ="<img src='".$latest_skin_path."/img/camera.png' border=0 align=absmiddle width=16 height=16>";//아이콘
$subject = cut_str($row2['wr_subject'], 30);//제목
$cut_content = nl2br(cut_str($row2['wr_content'],"80","…"));//내용
$all_content = nl2br(get_text($row2['wr_content']));
    $icon_new  = "";//new icon, bo_new 사용
    if ($row2['wr_datetime'] >= date("Y-m-d H:i:s", $g4['server_time'] - ($board['bo_new'] * 3600)))
$icon_new  = "<img src='$latest_skin_path/img/icon_new.gif' border='0' align='absmiddle'>";

//당일인 경우 시간으로 표시함, common.lib.php 참고
    $la_date['datetime'] = substr($row2['wr_datetime'],0,10);
    $la_date['datetime2'] = $row2['wr_datetime'];
    if ($la_date['datetime'] == $g4['time_ymd'])
        $la_date['datetime2'] = substr($la_date['datetime2'],11,5);
    else
        $la_date['datetime2'] = substr($la_date['datetime2'],5,5);

//출력부분 설정
$str .= "<td width='{$td_width}%' valign=bottom style='word-break:break-all;'>";
$str .= "<table cellspacing=0 cellpadding=0><tr><td align=center valign=middle width=110  height='110' style='border-right:1px solid #BBB;'><a href='$g4[bbs_path]/board.php?bo_table=$bo_table&sca=" .$ca_sub. "'>{$img}</a></td><td style='padding:10 10 5 20;'>".$icon."&nbsp;<a href='$g4[bbs_path]/board.php?bo_table=$bo_table&sca=" .$ca_sub. "'><b>" .$ca_sub. "</b></a> <font color=#FF80C0>[".$row1[cat_cnt]."]</font>".$icon_new."<br><b>" .$subject. "</b> (" . $la_date['datetime2'] . ")<br>" .$cut_content. "<br><font color='red'>" .$ca_txt. "</font></td></tr></table>";
$str .= "</td>";

} //if (trim~
}//for~

// 나머지 td
$cnt = $i % $mod;
if ($cnt > 0){
for ($i=$cnt; $i < $mod; $i++){
$str .= "<td width='{$td_width}%'><table cellspacing=0 cellpadding=0><tr><td width=110  height='110' style='border-right:1px solid #BBB;'>&nbsp;</td><td></td></tr></table></td>";
}
}
//}//if (count~


//전체 게시물
$row_cnt = sql_fetch(" SELECT count(*) as total_cnt FROM {$g4[write_prefix]}{$bo_table} WHERE wr_is_comment = '' ");
$total_cnt = $row_cnt['total_cnt']


?>

<table width="835" border="1" cellspacing="0" cellpadding="0" style="border-color:#BBB; border-collapse: collapse; empty-cells:show; " >
<tr>
<td colspan=<?=$mod?> style='padding-left:10; padding-top:5;  padding-bottom:0; background:#EEE;'>
<a href="<?=$g4[bbs_path]?>/board.php?bo_table=<?=$bo_table?>"><b><?=$row[bo_subject]?></b></a> Total (<?=$total_cnt/*전체 이미지*/ ?>)</td>
</tr>
<tr>
<?=$str/*실제 출력부분*/?>
</tr>
</table>
추천
0

댓글 전체

고생하셨습니다.....
다운 받아 설치하신분들의 좋은 말씀 한마디 한마디가 더 좋은 작품을 만드는 발판이 되지요......

40이시라....저도 낼 모레면 40인데.....ㅎㅎㅎ

감사합니다. 좋은 날 되십시오~~~~
바쁘신데 도움 주셔서 매우 감사하게 생각하고 있습니다.
도움을 드릴 수 없는 것이 죄송스럽기도 하구요.
이번 프로젝트 꼭 성공하시길 기원합니다.
신고합니다.^^
헐랭이님 basic2 에서 힌트를 얻어 한건했습니다.

//분류목록 세로 갯수, 필드하나로 모든칼럼수 설정
$cols_num = explode(",",$board['bo_3']);
$mod = $cols_num[1];//분류 세로칼럼, bo_3 두번째 사용 5,2,6
정해진 필드를 최대한 사용할 목적으로 시도해본 거랍니다.
아무래도 저방식으로 도배시 속도는 느려지겠지만 대략 수백가지의
기능을 조합이 가능할겁니다.ㅋㅋ
심심한 일요일에 일부 수정해서 다시 올립니다.
쉽게 보시고 조언해 주십사 하는 의미에서 latest.skin.php 소스코드를 붙여넣었습니다.
코멘트 주신분과 체크해주신분들께 감사드립니다.
즐거운 휴일 되시기 바랍니다.
전체 5,850 |RSS
그누4 스킨 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT