[팬텀디자인] 영카트 상품 결제 이후 해당 상품 자료실 제작하기 (1부) > 그누보드5 팁자료실

그누보드5 팁자료실

[팬텀디자인] 영카트 상품 결제 이후 해당 상품 자료실 제작하기 (1부) 정보

[팬텀디자인] 영카트 상품 결제 이후 해당 상품 자료실 제작하기 (1부)

본문

실제 상품 결제가 완료된 이후, 상품 구매자를 위한 자료실 만들기입니다.

현재 영카트5 팁자료실에 dhtml 에디터 적용이 안되어 그누보드5 팁자료실에 게시합니다. 문제 시 삭제하겠습니다.

 

기본 로직

- 기존 영카트 상품 테이블(g5_shop_item)에 있는 it_10_subj 컬럼과 it_10 컬럼을 활용하여 다운로드 링크로 활용함.

- 기존 it_10_subj 컬럼과 it_10 컬럼을 사용중이신 분들은 새로운 컬럼 2개를 생성해주시면 됩니다.

  * 주의점 : 새롭게 컬럼을 생성하실 경우 아래 진행과정 중 update 파일에서 파일을 추가해줄 때 SQL 업데이트 구문

에 해당 컬럼을 추가해주셔야 합니다.

컬럼명 용도
it_10_subj 다운로드 링크 저장
it_10 다운로드 링크 삭제(del)

 

1. 기존 /adm/shop_admin/itemform.php 파일 내 1697라인 부근 여분필드 시작 부분에서

 


<?php for ($i=1; $i<=10; $i++) { ?>

 

부분을 아래와 같이 변경 합니다.

 


<?php for ($i=1; $i<=9; $i++) { ?>

  

2. 앵커또한 추가해줘야 하니 /adm/shop_admin/itemform.php 파일188번째 라인쯤 상품이미지 상단에 자료업로드 앵커를 추가해줍니다.

 


<li><a href="#anc_sitfrm_sendcost">배송비</a></li>
<li><a href="#anc_sitfrm_download">자료 업로드</a></li>
<li><a href="#anc_sitfrm_img">상품이미지</a></li>

 

3. 여분필드 10을 응용하여 자료 업로드를 위한 섹션을 만들어줍니다.

/adm/shop_admin/itemform.php 파일 내 1320번 라인 근처<section id="anc_sitfrm_img"> 코드 위쪽에 하단 코드를 추가해줍니다.

 


<section id="anc_sitfrm_download">
    <h2 class="h2_frm">자료 업로드</h2>
    <?php echo $pg_anchor; ?>
 
    <div class="tbl_frm01 tbl_wrap">
        <table>
        <caption>자료 업로드</caption>
        <colgroup>
            <col class="grid_4">
            <col>
        </colgroup>
        <tbody>
        <tr>
            <th scope="row"><label for="it_10_subj">자료 업로드</label></th>
            <td>
                <input type="file" name="it_10_subj" id="it_10_subj">
                <?php
                $it_download = G5_DATA_PATH.'/item/'.$it['it_10_subj'];
                $it_download_url = G5_DATA_URL.'/item/'.$it['it_10_subj'];
                $it_img_exists = run_replace('shop_item_image_exists', (is_file($it_download) && file_exists($it_download)), $it);
                if($it_img_exists) {
                  $upload_filename = explode('/', $it['it_10_subj']);
                  echo '<a href="'.$it_download_url.'"><p style="padding:2px 10px; display:inline-block; margin-right:10px; background:orange; color:white;">다운로드: '.$upload_filename[1].'</p></a>';
                ?>
                <label for="it_10"><span class="sound_only">자료 업로드 </span>파일삭제</label>
                <input type="checkbox" name="it_10" id="it_10" value="1">
                <?php } ?>
            </td>
        </tr>
        </tbody>
        </table>
    </div>
</section>

 

4. 기존 여분필드로 사용하던 부분을 자료용으로 활용하기 위해서는 update 파일에서 파일로 사용하기 위한 작업을 해줘야합니다.

 

/adm/shop_admin/itemform.php 파일 38번째 줄 근처 코드 아래부터 하단 코드 추가

 


$it_img1 = $it_img2 = $it_img3 = $it_img4 = $it_img5 = $it_img6 = $it_img7 = $it_img8 = $it_img9 = $it_img10 = '';
 
위 코드를
 
$it_img1 = $it_img2 = $it_img3 = $it_img4 = $it_img5 = $it_img6 = $it_img7 = $it_img8 = $it_img9 = $it_img10 = $it_10_subj = '';
 
위 코드로 교체
 
    $sql = " select it_img1, it_img2, it_img3, it_img4, it_img5, it_img6, it_img7, it_img8, it_img9, it_img10
 
위 코드를
 
    $sql = " select it_img1, it_img2, it_img3, it_img4, it_img5, it_img6, it_img7, it_img8, it_img9, it_img10, it_10_subj
 
위 코드로 교체

 

/adm/shop_admin/itemform.php 파일 55번째 줄 근처 코드 아래부터 하단 코드 추가

 


    $it_img10   = $file['it_img10'];
    $it_10_subj   = $file['it_10_subj']; // 추가되는 부분
}
 
$it_img_dir = G5_DATA_PATH.'/item';
 
${'it_10'} = ! empty($_POST['it_10']) ? 1 : 0; // 추가되는 부분
 
for($i=0;$i<=10;$i++){
    ${'it_img'.$i.'_del'} = ! empty($_POST['it_img'.$i.'_del']) ? 1 : 0;
}

 

/adm/shop_admin/itemform.php 파일 116번째 줄 근처 코드 아래에 하단 코드 추가

 


if ($it_img10_del) {
    $file_img10 = $it_img_dir.'/'.clean_relative_paths($it_img10);
    @unlink($file_img10);
    delete_item_thumbnail(dirname($file_img10), basename($file_img10));
    $it_img10 = '';
}
// 자료업로드 파일삭제 (추가되는 부분)
if ($it_10) {
    $it_10_subj = $it_img_dir.'/'.clean_relative_paths($it_10_subj);
    @unlink($it_10_subj);
    delete_item_thumbnail(dirname($it_10_subj), basename($it_10_subj));
    $it_10_subj = '';
}

 

/adm/shop_admin/itemform.php 파일 210번째 줄 근처 코드 아래에 하단 코드 추가

 


if ($_FILES['it_img10']['name']) {
    if($w == 'u' && $it_img10) {
        $file_img10 = $it_img_dir.'/'.clean_relative_paths($it_img10);
        @unlink($file_img10);
        delete_item_thumbnail(dirname($file_img10), basename($file_img10));
    }
    $it_img10 = it_img_upload($_FILES['it_img10']['tmp_name'], $_FILES['it_img10']['name'], $it_img_dir.'/'.$it_id);
}
// 파일업로드 (추가되는 부분)
if ($_FILES['it_10_subj']['name']) {
    if($w == 'u' && $it_10_subj) {
        $it_10_subj = $it_img_dir.'/'.clean_relative_paths($it_10_subj);
        @unlink($it_10_subj);
        delete_item_thumbnail(dirname($it_10_subj), basename($it_10_subj));
    }
    $it_10_subj = it_down_upload($_FILES['it_10_subj']['tmp_name'], $_FILES['it_10_subj']['name'], $it_img_dir.'/'.$it_id);
}

 

5. 마지막으로 upload_file 함수에 대한 정의가 필요합니다. /lib/shop.lib.php 파일 697번 라인 하단에 아래 코드를 추가해주세요.

 


// 파일을 업로드 함
function upload_file($srcfile, $destfile, $dir)
{
    if ($destfile == "") return false;
    // 업로드 한후 , 퍼미션을 변경함
    _uploaded_file($srcfile, $dir.'/'.$destfile);
    @chmod($dir.'/'.$destfile, G5_FILE_PERMISSION);
    return true;
}
// 상품 자료실 파일을 업로드 함
function it_down_upload($srcfile, $filename, $dir)
{
    if($filename == '')
        return '';

    if(!is_dir($dir)) {
        @mkdir($dir, G5_DIR_PERMISSION);
        @chmod($dir, G5_DIR_PERMISSION);
    }
    $prepend = '';
    $filename = $prepend.$filename;
    upload_file($srcfile, $filename, $dir);
    $file = str_replace(G5_DATA_PATH.'/item/', '', $dir.'/'.$filename);
    return $file;
}

 

그러면 아래와 같이 자료 업로드 섹션이 추가됩니다.

 

1981878700_1651662751.8702.png

 

 

업로드/다운로드 및 파일삭제도 잘됩니다.

 

1981878700_1651662755.6627.png

 

 

DB 및 실제 FTP에도 잘 들어간게 확인됩니다.

 

1981878700_1651662760.4465.png1981878700_1651662763.1373.png

 

-----

 

위와같이 진행되셨다면 기초적인 상품 자료실 구축 1단계는 완료되었습니다.

 

금일 시간이 없는 관계로, 2부에서 이어서 진행하도록 하겠습니다.

 

감사합니다.

 

추천
12

댓글 14개

아, lib에 추가되는 구문이 빠졌군요. 수정하여 재업로드 하였습니다.

/lib/shop.lib.php 파일 697번 라인 하단에 아래 코드를 추가해주세요.


function _callback_it_img_upload($matches){
    return isset($matches[0]) ? base64_encode($matches[0]) : '';
} // 해당 코드 아래쪽에

// 파일을 업로드 함
function upload_file($srcfile, $destfile, $dir)
{
    if ($destfile == "") return false;
    // 업로드 한후 , 퍼미션을 변경함
    _uploaded_file($srcfile, $dir.'/'.$destfile);
    @chmod($dir.'/'.$destfile, G5_FILE_PERMISSION);
    return true;
}

// 상품 자료실 파일을 업로드 함
function it_down_upload($srcfile, $filename, $dir)
{
    if($filename == '')
        return '';


    if(!is_dir($dir)) {
        @mkdir($dir, G5_DIR_PERMISSION);
        @chmod($dir, G5_DIR_PERMISSION);
    }

    $prepend = '';

    $filename = $prepend.$filename;

    upload_file($srcfile, $filename, $dir);

    $file = str_replace(G5_DATA_PATH.'/item/', '', $dir.'/'.$filename);

    return $file;
}

전체 2,426 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

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