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

회원가격(Lv.2) / 특별가격(Lv.3) / VIP가격(Lv.4 이상) (2022-02-07 14:30 수정)

영카트4 에서 회원가격(레벨 2) / 특별회원(레벨 3) / VIP회원(레벨4 이상) 일때 다른 금액으로 보이는 기능을 영카트5에 추가합니다.
판매가격 > 비회원가격
(추가) > 회원가격
(추가) > 특별가격
(추가) > VIP가격


디비의 g5_shop_item 에 it_price2 , it_price3 , it_price4 필드를 추가
adm / shop_admin
├ itemform.php
├ itemformupdate.php
└ itemlist.php
lib
└ shop.lib.php
shop
└ cartupdate.php



1-1. 영카트5 / adm / shop_admin / itemlist.php
상단 include_once('./_common.php'); 아래에 내용 추가

// 회원레벨 2 - 상품가격(회원가격) 필드 추가
if(!sql_query(" select it_price2 from {$g5['g5_shop_item_table']} limit 1 ", false)) {
sql_query(" ALTER TABLE `{$g5['g5_shop_item_table']}`
ADD `it_price2` int(11) NOT NULL DEFAULT '0' AFTER `it_price` ", true);
}
// 회원레벨 3 - 상품가격(특별가격) 필드 추가
if(!sql_query(" select it_price3 from {$g5['g5_shop_item_table']} limit 1 ", false)) {
sql_query(" ALTER TABLE `{$g5['g5_shop_item_table']}`
ADD `it_price3` int(11) NOT NULL DEFAULT '0' AFTER `it_price2` ", true);
}
// 회원레벨 4 - 상품가격(VIP가격) 필드 추가
if(!sql_query(" select it_price4 from {$g5['g5_shop_item_table']} limit 1 ", false)) {
sql_query(" ALTER TABLE `{$g5['g5_shop_item_table']}`
ADD `it_price4` int(11) NOT NULL DEFAULT '0' AFTER `it_price3` ", true);
}

위 내용 저장후 > 관리자 > 쇼핑몰관리 > 상품관리 클릭하면 디비에 필드가 추가됩니다


1-2. 영카트5 / adm / shop_admin / itemlist.php

colspan="5" 를 colspan="6" 로 변경 합니다. ( 2개가 있습니다 )


1-3. 영카트5 / adm / shop_admin / itemlist.php
<tr>
<th scope="col" rowspan="2" id="th_img">이미지</th>
<th scope="col" rowspan="2" id="th_pc_title"><?php echo subject_sort_link('it_name', 'sca='.$sca); ?>상품명</a></th>
<th scope="col" id="th_amt"><?php echo subject_sort_link('it_price', 'sca='.$sca); ?>판매가격</a></th>
<th scope="col" id="th_camt"><?php echo subject_sort_link('it_cust_price', 'sca='.$sca); ?>시중가격</a></th>
<th scope="col" id="th_skin">PC스킨</th>
</tr>
<tr>
<th scope="col" id="th_pt"><?php echo subject_sort_link('it_point', 'sca='.$sca); ?>포인트</a></th>
<th scope="col" id="th_qty"><?php echo subject_sort_link('it_stock_qty', 'sca='.$sca); ?>재고</a></th>
<th scope="col" id="th_mskin">모바일스킨</th>
</tr>

를 다음과 같이 변경

<tr>
<th scope="col" rowspan="2" id="th_img">이미지</th>
<th scope="col" rowspan="2" id="th_pc_title"><?php echo subject_sort_link('it_name', 'sca='.$sca); ?>상품명</a></th>
<th scope="col" id="th_amt"><?php echo subject_sort_link('it_price', 'sca='.$sca); ?>비회원가격</a></th>
<th scope="col" id="th_amt"><?php echo subject_sort_link('it_price2', 'sca='.$sca); ?>회원가격</a></th>
<th scope="col" id="th_amt"><?php echo subject_sort_link('it_price3', 'sca='.$sca); ?>특별가격</a></th>
<th scope="col" id="th_skin">PC스킨</th>
</tr>
<tr>
<th scope="col" id="th_camt"><?php echo subject_sort_link('it_cust_price', 'sca='.$sca); ?>시중가격</a></th>
<th scope="col" id="th_pt"><?php echo subject_sort_link('it_point', 'sca='.$sca); ?>포인트</a></th>
<th scope="col" id="th_qty"><?php echo subject_sort_link('it_stock_qty', 'sca='.$sca); ?>재고</a></th>
<th scope="col" id="th_mskin">모바일스킨</th>
</tr>


1-4. 영카트5 / adm / shop_admin / itemlist.php

<tr class="<?php echo $bg; ?>">
<td rowspan="2" class="td_img"><a href="<?php echo $href; ?>"><?php echo get_it_image($row['it_id'], 50, 50); ?></a></td>
<td headers="th_pc_title" rowspan="2" class="td_input">
<label for="name_<?php echo $i; ?>" class="sound_only">상품명</label>
<input type="text" name="it_name[<?php echo $i; ?>]" value="<?php echo htmlspecialchars2(cut_str($row['it_name'],250, "")); ?>" id="name_<?php echo $i; ?>" required class="frm_input required" size="30">
</td>
<td headers="th_amt" class="td_numbig td_input">
<label for="price_<?php echo $i; ?>" class="sound_only">판매가격</label>
<input type="text" name="it_price[<?php echo $i; ?>]" value="<?php echo $row['it_price']; ?>" id="price_<?php echo $i; ?>" class="frm_input sit_amt" size="7">
</td>
<td headers="th_camt" class="td_numbig td_input">
<label for="cust_price_<?php echo $i; ?>" class="sound_only">시중가격</label>
<input type="text" name="it_cust_price[<?php echo $i; ?>]" value="<?php echo $row['it_cust_price']; ?>" id="cust_price_<?php echo $i; ?>" class="frm_input sit_camt" size="7">
</td>
<td headers="th_skin" class="td_numbig td_input">
<label for="it_skin_<?php echo $i; ?>" class="sound_only">PC 스킨</label>
<?php echo get_skin_select('shop', 'it_skin_'.$i, 'it_skin['.$i.']', $row['it_skin']); ?>
</td>
</tr>
<tr class="<?php echo $bg; ?>">
<td headers="th_pt" class="td_numbig td_input"><?php echo $it_point; ?></td>
<td headers="th_qty" class="td_numbig td_input">
<label for="stock_qty_<?php echo $i; ?>" class="sound_only">재고</label>
<input type="text" name="it_stock_qty[<?php echo $i; ?>]" value="<?php echo $row['it_stock_qty']; ?>" id="stock_qty_<?php echo $i; ?>" class="frm_input sit_qty" size="7">
</td>
<td headers="th_mskin" class="td_numbig td_input">
<label for="it_mobile_skin_<?php echo $i; ?>" class="sound_only">모바일 스킨</label>
<?php echo get_mobile_skin_select('shop', 'it_mobile_skin_'.$i, 'it_mobile_skin['.$i.']', $row['it_mobile_skin']); ?>
</td>
</tr>

를 다음과 같이 변경

<tr class="<?php echo $bg; ?>">
<td rowspan="2" class="td_img"><a href="<?php echo $href; ?>"><?php echo get_it_image($row['it_id'], 50, 50); ?></a></td>
<td headers="th_pc_title" rowspan="2" class="td_input">
<label for="name_<?php echo $i; ?>" class="sound_only">상품명</label>
<input type="text" name="it_name[<?php echo $i; ?>]" value="<?php echo htmlspecialchars2(cut_str($row['it_name'],250, "")); ?>" id="name_<?php echo $i; ?>" required class="frm_input required" size="30">
</td>
<td headers="th_amt" class="td_numbig td_input">
<label for="price_<?php echo $i; ?>" class="sound_only">비회원가격</label>
<input type="text" name="it_price[<?php echo $i; ?>]" value="<?php echo $row['it_price']; ?>" id="price_<?php echo $i; ?>" class="frm_input sit_amt" size="7">
</td>
<td headers="th_amt" class="td_numbig td_input">
<label for="price2_<?php echo $i; ?>" class="sound_only">회원가격</label>
<input type="text" name="it_price2[<?php echo $i; ?>]" value="<?php echo $row['it_price2']; ?>" id="price2_<?php echo $i; ?>" class="frm_input sit_amt" size="7">
</td>
<td headers="th_amt" class="td_numbig td_input">
<label for="price3_<?php echo $i; ?>" class="sound_only">특별가격</label>
<input type="text" name="it_price3[<?php echo $i; ?>]" value="<?php echo $row['it_price3']; ?>" id="price3_<?php echo $i; ?>" class="frm_input sit_amt" size="7">
</td>
<td headers="th_skin" class="td_numbig td_input">
<label for="it_skin_<?php echo $i; ?>" class="sound_only">PC 스킨</label>
<?php echo get_skin_select('shop', 'it_skin_'.$i, 'it_skin['.$i.']', $row['it_skin']); ?>
</td>
</tr>
<tr class="<?php echo $bg; ?>">
<td headers="th_camt" class="td_numbig td_input">
<label for="cust_price_<?php echo $i; ?>" class="sound_only">시중가격</label>
<input type="text" name="it_cust_price[<?php echo $i; ?>]" value="<?php echo $row['it_cust_price']; ?>" id="cust_price_<?php echo $i; ?>" class="frm_input sit_camt" size="7">
</td>
<td headers="th_pt" class="td_numbig td_input"><?php echo $it_point; ?></td>
<td headers="th_qty" class="td_numbig td_input">
<label for="stock_qty_<?php echo $i; ?>" class="sound_only">재고</label>
<input type="text" name="it_stock_qty[<?php echo $i; ?>]" value="<?php echo $row['it_stock_qty']; ?>" id="stock_qty_<?php echo $i; ?>" class="frm_input sit_qty" size="7">
</td>
<td headers="th_mskin" class="td_numbig td_input">
<label for="it_mobile_skin_<?php echo $i; ?>" class="sound_only">모바일 스킨</label>
<?php echo get_mobile_skin_select('shop', 'it_mobile_skin_'.$i, 'it_mobile_skin['.$i.']', $row['it_mobile_skin']); ?>
</td>
</tr>


2. 영카트5 / adm / shop_admin / itemform.php
<tr>
<th scope="row"><label for="it_price">판매가격</label></th>
<td>
<input type="text" name="it_price" value="<?php echo $it['it_price']; ?>" id="it_price" class="frm_input" size="8"> 원
</td>
<td class="td_grpset">
<input type="checkbox" name="chk_ca_it_price" value="1" id="chk_ca_it_price">
<label for="chk_ca_it_price">분류적용</label>
<input type="checkbox" name="chk_all_it_price" value="1" id="chk_all_it_price">
<label for="chk_all_it_price">전체적용</label>
</td>
</tr>

를 다음과 같이 변경

<tr>
<th scope="row"><label for="it_price">비회원가격</label></th>
<td>
<input type="text" name="it_price" value="<?php echo $it['it_price']; ?>" id="it_price" class="frm_input" size="8"> 원
</td>
<td class="td_grpset">
<input type="checkbox" name="chk_ca_it_price" value="1" id="chk_ca_it_price">
<label for="chk_ca_it_price">분류적용</label>
<input type="checkbox" name="chk_all_it_price" value="1" id="chk_all_it_price">
<label for="chk_all_it_price">전체적용</label>
</td>
</tr>
<tr>
<th scope="row"><label for="it_price2">회원가격(Lv.2)</label></th>
<td>
<input type="text" name="it_price2" value="<?php echo $it['it_price2']; ?>" id="it_price2" class="frm_input" size="8"> 원
</td>
<td class="td_grpset">
</td>
</tr>
<tr>
<th scope="row"><label for="it_price3">특별가격(Lv.3)</label></th>
<td>
<input type="text" name="it_price3" value="<?php echo $it['it_price3']; ?>" id="it_price3" class="frm_input" size="8"> 원
</td>
<td class="td_grpset">
</td>
</tr>
<tr>
<th scope="row"><label for="it_price4">VIP가격(Lv.4 이상)</label></th>
<td>
<input type="text" name="it_price4" value="<?php echo $it['it_price4']; ?>" id="it_price4" class="frm_input" size="8"> 원
</td>
<td class="td_grpset">
</td>
</tr>


3. 영카트5 / adm / shop_admin / itemformupdate.php
it_price = '$it_price',

를 다음과 같이 변경

it_price = '{$it_price}',
it_price2 = '{$it_price2}',
it_price3 = '{$it_price3}',
it_price4 = '{$it_price4}',



4. 영카트5 / adm / shop_admin / itemlistupdate.php
it_price = '{$_POST['it_price'][$k]}',

를 아래와 같이 변경

it_price = '{$_POST['it_price'][$k]}',
it_price2 = '{$_POST['it_price2'][$k]}',
it_price3 = '{$_POST['it_price3'][$k]}',
it_price4 = '{$_POST['it_price4'][$k]}',


5. 영카트5 / lib / shop.lib.php
function get_price($it)
{
global $member;

if ($it['it_tel_inq']) return '전화문의';

$price = $it['it_price'];

return (int)$price;
}

를 아래와 같이 변경

function get_price($it)
{
global $member;

if ($it['it_tel_inq']) return '전화문의';

if ($member['mb_level'] >= 4 && $it['it_price4'] > 0) {
$price = $it['it_price4'];
} else if ($member['mb_level'] >= 3 && $it['it_price3'] > 0) {
$price = $it['it_price3'];
} else if ($member['mb_level'] >= 2 && $it['it_price2'] > 0) {
$price = $it['it_price2'];
} else {
$price = $it['it_price'];
}

return (int)$price;
}



6. 영카트5 / shop / cartupdate.php
2017-09-08 04:13 : it['it_price_2'], it['it_price_3'] 를 it['it_price2'], it['it_price3'] 로 변경했습니다.
2017-09-08 04:13 : 영카드 구버전은 '$ct_select_time' 가 없습니다. 원문 비교해서 적용하세요

$sql .= $comma."( '$tmp_cart_id', '{$member['mb_id']}', '{$it['it_id']}', '".addslashes($it['it_name'])."', '{$it['it_sc_type']}', '{$it['it_sc_method']}', '{$it['it_sc_price']}', '{$it['it_sc_minimum']}', '{$it['it_sc_qty']}', '쇼핑', '{$it['it_price']}', '$point', '0', '0', '$io_value', '$ct_qty', '{$it['it_notax']}', '$io_id', '$io_type', '$io_price', '".G5_TIME_YMDHIS."', '$REMOTE_ADDR', '$ct_send_cost', '$sw_direct', '$ct_select', '$ct_select_time' )";

를 아래와 같이 변경

if ($member['mb_level'] >= 4 && $it['it_price4'] > 0) { // VIP가격 Lv.4
$it_price = $it['it_price4'];
} else if ($member['mb_level'] == 3 && $it['it_price3'] > 0) { // 특별가격 Lv.3
$it_price = $it['it_price3'];
} else if ($member['mb_level'] == 2 && $it['it_price2'] > 0) { // 회원가격 Lv.2
$it_price = $it['it_price2'];
} else { // 비회원가격
$it_price = $it['it_price'];
}
$sql .= $comma."( '{$tmp_cart_id}', '{$member['mb_id']}', '{$it['it_id']}', '".addslashes($it['it_name'])."', '{$it['it_sc_type']}', '{$it['it_sc_method']}', '{$it['it_sc_price']}', '{$it['it_sc_minimum']}', '{$it['it_sc_qty']}', '쇼핑', '{$it_price}', '{$point}', '0', '0', '{$io_value}', '{$ct_qty}', '{$it['it_notax']}', '{$io_id}', '{$io_type}', '{$io_price}', '".G5_TIME_YMDHIS."', '{$REMOTE_ADDR}', '{$ct_send_cost}', '{$sw_direct}', '{$ct_select}', '{$ct_select_time}' )";


관련자료
https://sir.kr/yc5_tip/816
https://sir.kr/yc5_tip/578

댓글 작성

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

로그인하기

댓글 18개

좋은 자료 감사합니다. ^^
찾고 있던 자료네요. 감사합니다.
인터넷익스플로어에서는 잘되는데 크롬에서는 구매시 화면이 보였다가 사라지네요.
화면이 사라지나요?
익스와 크롬의 특성타는 그런 코드는 없는데 말입니다.
해결한건 아니지만 원인을 찾아냈어요. redshop테마를 사용중인데 여기서만 일어나는 현상이네요.
고맙습니다. 잘따라해서 적용 성공했습니다. 그런데 또 더 욕심이 생겨 ... 6개를 한번 적용해봤는데 역시 잘 안되네요. 이것저것 보고 짜깁기만 할 줄 아는 저의 짧디짧은 지식이 너무 밉네요... 도움을 좀 받으려면 어찌해야 할까요.
6개를 한번에 적용이라는 의미가 무엇인지요?
유료지원도 가능합니다. 연락처는 해피정 아이디의 자기소개를 누르면 볼 수 있습니다.
연락주세요
만들다가 하나가 빠진 것이 있는 듯해 올립니다.

영카트5 / adm / shop_admin / itemlistupdate.php




it_price = '{$_POST['it_price'][$k]}',





it_price = '{$_POST['it_price'][$k]}',
it_price2 = '{$_POST['it_price2'][$k]}',
it_price3 = '{$_POST['it_price3'][$k]}',

로 수정.
6. 영카트5 / adm / shop_admin / itemformupdate.php

it_price = '$it_price',

를 다음과 같이 변경

it_price = '$it_price',
it_price2 = '$it_price2',
it_price3 = '$it_price3',

라고 본문에 내용이 있습니다.
아..죄송합니다...^^ 하다보니..그부분을 지나쳤나보네요.
적용 잘 되었습니다. 감사합니다
레벨에 관계없이 장바구니와 바로구매 부분에서는 원래 가격으로 돌아가는데요
관리자는 특별가격으로 잘 적용되는데 다른 레벨은 상품페이지 까지만 변경되어서요 혹시 추가해야될것이 있을까요?
비회원인지
회원 level 2 인지
회원 level 3 이상인지
이렇게 3가지 분류가 존재합니다.
관리자가 특별가격이 된다면 level 3 이상이면 다 되어야 맞습니다.
[http://sir.kr/data/editor/1808/f5a13cf6581f0c855055623580604b9d_1533618232_124.jpg]

위에처럼 주문할때 가격은 잘 나오다가 장바구니와 바로구매에서 가격이 변해서요
cartupdate.php 의 로직에 뭔가가 누락된것이 아닌가 싶습니다.
사용하는 버전과 제가 구현한 로직의 버전이 다른것일수 있습니다.
네 답변 감사합니다
필요한 자료였는데 감사합니다.
안녕하세요~ 글을 너무 잘봤습니다.
한가지 궁금한게있어서 댓글 남깁니다.
이 코드를 따라하니 로그인을 하면 회원가로 변경은되는데
기존 가격은 표기가 안되더라구요.
기존가격도 표시를 하고 회원가도 표시를 해주려면 어디를 수정해야할까요?
초보자라서 도움을 요청드립니다.ㅠㅠ

게시판 목록

영카트5 팁자료실

글쓰기
🐛 버그신고