실제 상품 결제가 완료된 이후, 상품 구매자를 위한 자료실 만들기입니다.
현재 영카트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라인 부근 여분필드 시작 부분에서
[code]
<?php for ($i=1; $i<=10; $i++) { ?>
[/code]
부분을 아래와 같이 변경 합니다.
[code]
<?php for ($i=1; $i<=9; $i++) { ?>
[/code]
2. 앵커또한 추가해줘야 하니 /adm/shop_admin/itemform.php 파일188번째 라인쯤 상품이미지 상단에 자료업로드 앵커를 추가해줍니다.
[code]
<li><a href="#anc_sitfrm_sendcost">배송비</a></li>
<li><a href="#anc_sitfrm_download">자료 업로드</a></li>
<li><a href="#anc_sitfrm_img">상품이미지</a></li>
[/code]
3. 여분필드 10을 응용하여 자료 업로드를 위한 섹션을 만들어줍니다.
/adm/shop_admin/itemform.php 파일 내 1320번 라인 근처<section id="anc_sitfrm_img"> 코드 위쪽에 하단 코드를 추가해줍니다.
[code]
<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>
[/code]
4. 기존 여분필드로 사용하던 부분을 자료용으로 활용하기 위해서는 update 파일에서 파일로 사용하기 위한 작업을 해줘야합니다.
/adm/shop_admin/itemform.php 파일 38번째 줄 근처 코드 아래부터 하단 코드 추가
[code]
$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
위 코드로 교체
[/code]
/adm/shop_admin/itemform.php 파일 55번째 줄 근처 코드 아래부터 하단 코드 추가
[code]
$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;
}[/code]
/adm/shop_admin/itemform.php 파일 116번째 줄 근처 코드 아래에 하단 코드 추가
[code]
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 = '';
}
[/code]
/adm/shop_admin/itemform.php 파일 210번째 줄 근처 코드 아래에 하단 코드 추가
[code]
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);
}
[/code]
5. 마지막으로 upload_file 함수에 대한 정의가 필요합니다. /lib/shop.lib.php 파일 697번 라인 하단에 아래 코드를 추가해주세요.
[code]
// 파일을 업로드 함
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;
}
[/code]
그러면 아래와 같이 자료 업로드 섹션이 추가됩니다.

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

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


-----
위와같이 진행되셨다면 기초적인 상품 자료실 구축 1단계는 완료되었습니다.
금일 시간이 없는 관계로, 2부에서 이어서 진행하도록 하겠습니다.
감사합니다.
댓글 14개
게시글 목록
| 번호 | 제목 |
|---|---|
| 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 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기