팁게시판

[팬텀디자인] 영카트 상품 결제 이후 해당 상품 자료실 제작하기 (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;
    // 업로드 한후 , 퍼미션을 변경함
    @move_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부에서 이어서 진행하도록 하겠습니다.

 

감사합니다.

관련자료

댓글 0
등록된 댓글이 없습니다.

최근글


  • 글이 없습니다.

새댓글


  • 댓글이 없습니다.
알림 0