분류 마지막 질문 입니다...........~~~ 안되면 그냥 포기 하고 파일 분리 안할렵니다.

분류 마지막 질문 입니다...........~~~ 안되면 그냥 포기 하고 파일 분리 안할렵니다.

QA

분류 마지막 질문 입니다...........~~~ 안되면 그냥 포기 하고 파일 분리 안할렵니다.

본문

lisk.skin 파일에서

 

$thumb = get_list_thumbnail($board['bo_table'],$list[$i]['ca_name'],$list[$i]['wr_id'], $thumb_width, $thumb_height); // 썸네일 크기를 위에서 선언한 크기사용  

 

이부분이 썸네일 생성 부분인데요...

 

일단... 게시판에 저장 까지 했지만..썸네일이 분류명 구분으로 출력이 안되서요...

 

리스트 스킨 보다는....

 thumbnail.lib.php   <----요넘이 문제 인것 같습니다............ 기존에는... 데이타폴더 게시판테이블

이름 아래에서 불러 왔는데요... 요넘은... 기본 적으로 그렇게 불러 오나 봅니다..

 

분류명으로 불러 올려면... 수정을 해야 될것 같은데요...php는 잘 몰라서요...................

 

파일이 많아서...... 분류명을... 폴더로 분리 하여... 분산 저장 하려 하는데... 잘 안되네요...

 

현재.................. 데이터폴더/파일/보드테이블/분류명1

                                                        분류명2

...

...

이런식으로 저장 합니다..........

 


 

 

 

이 질문에 댓글 쓰기 :

답변 3

원본소스기준 저장위치지정하는 파라미터가 없는데 당연히 안되는거죠

저장 구현부와 비슷하게  아래 링크의 저장위치 부분을 수정하시면 될것 같습니다.

https://github.com/gnuboard/gnuboard5/blob/fff7e074ff79c7699261c9bf73f6a99bb4f6d0a5/lib/thumbnail.lib.php#L17


function get_list_thumbnail($bo_table, $wr_id, $thumb_width, $thumb_height, $is_create=false, $is_crop=false, $crop_mode='center', $is_sharpen=false, $um_value='80/0.5/3')

$filepath = G5_DATA_PATH.'/file/'.$bo_table.'/'.$list[$i]['ca_name'];
        $alt = get_text($row['bf_content']);
    } else {
        $write_table = $g5['write_prefix'].$bo_table;
        $sql = " select wr_content from $write_table where wr_id = '$wr_id' ";
        $write = sql_fetch($sql);
        $matches = get_editor_image($write['wr_content'], false);
        $edt = true;

        for($i=0; $i<count($matches[1]); $i++)
        {
            // 이미지 path 구함
            $p = parse_url($matches[1][$i]);
            if(strpos($p['path'], '/'.G5_DATA_DIR.'/') != 0)
                $data_path = preg_replace('/^\/.*\/'.G5_DATA_DIR.'/', '/'.G5_DATA_DIR, $p['path']);
            else
                $data_path = $p['path'];

            $srcfile = G5_PATH.$data_path;

            if(preg_match("/\.({$config['cf_image_extension']})$/i", $srcfile) && is_file($srcfile)) {
                $size = @getimagesize($srcfile);
                if(empty($size))
                    continue;

                $filename = basename($srcfile);
                $filepath = dirname($srcfile);

                preg_match("/alt=[\"\']?([^\"\']*)[\"\']?/", $matches[0][$i], $malt);
                $alt = get_text($malt[1]);

                break;
            }
        }
    }

    if(!$filename)
        return false;

    $tname = thumbnail($filename, $filepath, $filepath, $thumb_width, $thumb_height, $is_create, $is_crop, $crop_mode, $is_sharpen, $um_value);

    if($tname) {
        if($edt) {
            $src = G5_URL.str_replace($filename, $tname, $data_path);
        } else {
            $src = G5_DATA_URL.'/file/'.$bo_table.'/'.$list[$i]['ca_name'].'/'.$tname;


이렇게 적용 하라는 말씀이 인가요?

1. 리스트에서 경로가 유동적으로 변한다.

2. 원본소스 get_list_thumbnail 함수는 경로를 받는 파라미터가 없다.

3. get_list_thumbnail를 복제해서 파라미터 함수를 받는 get_list_thumbnail_cus 함수를 만들어서 경로지정부를 구현한다.

4. 관련된 함수도 경로를 전달 할수 없다면 복제해서 적당하게 구현해야한다.

5. $thumb = get_list_thumbnail($board['bo_table'],$list[$i]['wr_id'], $thumb_width, $thumb_height, false, false, 'center', false, array('ca_name' => $list[$i]['ca_name']) ); 카테고리 이름을 전달한다.(파일이름이나 오류가 생길수 있는 문자가 포함될수 있으므로 해쉬나 기타방법으로 회피방법 구현)

 

카테고리이름으로 디렉토리를 한번더 만들어서 저장하므로 카테고리 이름을 파라미터로 넘겨서 경로에 추가하는 방법을 사용함

ex) 아래의 카테고리 이름을 전달받아서 캐시에서 가져오는 부분에 적용한 예시코드이므로 바로 적용할수 있는 코드가 아닙니다.



// 게시글리스트 썸네일 생성
function get_list_thumbnail_cus($bo_table, $wr_id, $thumb_width, $thumb_height, $is_create=false, $is_crop=false, $crop_mode='center', $is_sharpen=false, $um_value='80/0.5/3', $option='')
{
    global $g5, $config;
    $filename = $alt = $data_path = '';
    $edt = false;
// 캐시파일을 사용할려면 해당 함수도 수정해야됨
    $row = get_thumbnail_find_cache($bo_table, $wr_id, 'file');

    if($row['bf_file']) {
        $filename = $row['bf_file'];
        // $option['ca_name']으로 카테고리 이름을 전달 받았다는 가정하에 아래 코드를 적당하게 수정함
        $filepath = G5_DATA_PATH.'/file/'.$bo_table;
        if ($option['ca_name'] != '') $filepath .= '/' . $option['ca_name'];
        $alt = get_text($row['bf_content']);
    } else {
//이하코드도 관련 함수 파일경로부분은 다 수정해야됨


 

VS Code 기준

File > Open folder

Edit > Find in Files

위 방법으로 하시면 폴더 아래 기준으로 검색할수 있습니다.

말씀하신 파일은 /lib/get_data.lib.php 에 있습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 27
QA 내용 검색

회원로그인

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