테스트 사이트 - 개발 중인 베타 버전입니다

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

상품에 대한 별도의 자료실을 만들기 위해서는 연동해주어야 하는 부분이 생각보다 많아질 것 같아,

각 상품별 주문상세내역 페이지에서 다운로드를 진행하게끔 제작을 진행하기로 했습니다.

 

1. /shop/orderinquiryview.php 파일(테마를 사용중인 경우 테마 내 shop 폴더 사용)을 열어줍니다.

 

기본적으로 orderinquiryview.php 에서는 g5_shop_cart 의 DB 정보를 불러오기 때문에 g5_shop_item 테이블의 DB 정보를 불러와줍니다.

 

현재 주문서 아이템에 업로드된 자료가 있는지 체크해주는 부분을 추가합니다.

 

[code]

        $result = sql_query($sql); // 이 부분 아래쪽 추가

// 추가되는 부분

$sql = " select * from {$g5['g5_shop_cart_table']} where od_id = '{$od_id}' ";

$file_check = sql_fetch($sql); // 주문서번호 체크

$sql = " select it_id, it_10_subj, it_10 from {$g5['g5_shop_item_table']} where it_id = '{$file_check['it_id']}' ";

$file_check_result = sql_fetch($sql); // 상품번호 체크

        $fcr_check = G5_DATA_PATH.'/item/'.$file_check_result['it_10_subj'];

        $check_list = run_replace('shop_item_exists', (is_file($fcr_check) && file_exists($fcr_check)));

[/code]

 

$check_list 변수를 통해서 현재 업로드 된 파일이 존재하는지, 아닌지에 대한 검증을 마쳤으니 응용하여 다운로드를 할 수 있는 공간을 만들어줍니다.

 

38번째 라인 근처에 새로운 th를 추가해주고, 배송비 부분을 수정해줍니다.

 

[code]

<?php if($check_list){ echo ''; } else {?><th scope="col" id="th_itsd">배송비</th><?php }?> <!-- 자료가 있는 상품일 경우, 배송비 제외 -->

 

 

 

<?php // 주문상태와 파일 존재 유무 확인 후 다운로드 열 표시

if($file_check['ct_status'] == '입금' || $file_check['ct_status'] == '완료') {

if($check_list){

echo '<th scope="col" id="th_itst">다운로드</th>';

}

}?>

[/code]

 

이제 다운로드 공간을 넣어줍니다.

 

57번째 라인 근처 for 하단에 아래 코드를 추가해줍니다.

 

[code]

for($i=0; $row=sql_fetch_array($result); $i++) {

 

$sql = " select it_id, it_10_subj, it_10 from {$g5['g5_shop_item_table']} where it_id = '{$row['it_id']}' ";

$file = sql_fetch($sql); // 파일 업로드 DB 추가

$it_download = G5_DATA_PATH.'/item/'.$file['it_10_subj'];

$it_download_url =  G5_BBS_URL.'/item_down.php?od_id='.$od_id;

$it_file_exists = run_replace('shop_item_exists', (is_file($it_download) && file_exists($it_download)));

[/code]

 

한번 더 파일이 존재하는지 검증해준 뒤, 배송비 부분을 처리해주고, 아래 쪽에 다운로드 코드를 추가해줍니다

 

[code]

<?php if($check_list){ echo ''; } else {?><td headers="th_itsd" class="td_dvr"><?php echo $ct_send_cost; ?></td><?php }?> <!-- 배송비 파일 체크 --> 

 

<?php 

if($opt['ct_status'] == '입금' || $opt['ct_status'] == '완료'){

if($it_file_exists) { ?>

<td headers="th_itst" class="td_mngsmall"><a href="<?php echo $it_download_url?>" download><i class="fa fa-download" aria-hidden="true"></i></a></td>

<?php }

}?>

 

 

[/code]

 

별도의 검증과정을 만들지 않았기 때문에, 주문서 페이지에서 불러오는 기존 ct_status 상태로 다운로드 파일이 나올 수 있게끔 했으니, 상태에 따라 변경해주시면 됩니다.

 

파일에 대한 2차적인 검증은 item_down.php 파일에서 진행하고있습니다.

 

더 나은 코드가 있으시면 언제든지 코멘트를 통해서 알려주시면 반영하여 수정하겠습니다.

 

2. bbs 폴더에 올린 item_down.php 파일을 업로드해줍니다.

* 기본은 입금 과 완료 상태에따라서 다운로드가 가능하게끔 제작되었습니다. 해당 부분 각 쇼핑몰에 맞게 수정하시면 됩니다.

 

3. 이제 정상적으로 상품 상세페이지에서 다운로드가 가능해집니다.

 

1981878700_1651812449.615.png

'주문' 상태일 때

 

1981878700_1651812454.7804.png

'입금' 상태일 때

 

제작해놓고 보니, 자료실이라기 보다는 단순히 상품 자료라고 불러야할 것 같네요.

 

허접한 실력이지만 도움되셨으면 좋겠습니다.

 

감사합니다.

 

1981878700_1651812616.7256.png

* od_id를 get으로 가져오기때문에, 일반 URL을 통하여 접속을 할 경우 다운로드를 할 수 있었던 문제가 있었습니다. 

 

이제 일반 URL에서 접속하면 에러코드 101을 뱉어내며, 상세 주문서에서만 다운로드가 가능하게끔 item_down.php 파일을 수정했습니다.

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 16개

정말 감사합니다.
@사랑입니당 감사합니다.
@DawnDew 감사합니다.
정말 감사합니다.
@들레아빠 감사합니다.
공개해 주셔서 감사합니다. ^^
@호텔천사 감사합니다.
제게 꼭 필요했던 선물같은 기능입니다. 실행해보고 잘 활용하겠습니다. 감사합니다! 지난 게시글을 보고 2부를 기대했는데 역시 훌륭하네요. 제가 초짜라 잘 할 수 있을지는 모르겠지만 ㅠㅠ 그래도 열심히 해보겠습니다. 좋은 하루 보내세요!
@매드캣 하다가 막히는 부분이 있으시면 편하게 질문주시면 제가 도와드릴 수 있는 선에서 도와드리겠습니다. 감사합니다.
감사합니다
@네이비블루 감사합니다.
@트리플 감사합니다.
예시로 올려주신 주문 목록과는 달라서 2줄이라 버벅대며 고전을 했지만 그래도 일단은 어찌저찌 성공입니다.
정말, 정말 감사드려요!
[http://sir.kr/data/editor/2205/60d5cc69aeaef299be486288d20ee0b2_1653517769_0606.png]
@매드캣 잘 진행하셨다니 다행입니다. ^^

게시글 목록

번호 제목
24318
24317
24315
24309
24294
24293
24277
24262
24260
24253
24251
24236
24233
24228
24226
24221
24214
24203
24201
24199
24196
24195
24194
24192
24191
24187
24185
24183
24172
24168