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

상품옵션 금액표시 옥션처럼 변경 (상품옵션 (+0)원 없애기)

· 9년 전 · 9208 · 6
option-old.JPG
option02.JPG
상품옵션에서 추가금액이 표시되는 데요^^
추가금액이 없는데도 +0 이 표시되서 헷갈리기도 하고, 구분도 않되어있어서 보기가 복잡합니다!!

그래서 옥션처럼 추가금액이 없는 옵션가격에는 아무표시 없이 나오고
추가금액 표시도니느것을 (+2000원) 처럼 괄호로 변경하였습니다

아래 파일에서 해당 소스만 변경해주면 됩니다^^



수정할 파일 안내
//#################################################################
//원본 lib/shop.lib.php 946번째줄 즈음~
//######################################################################
// 옵션선택목록 만들기
for($i=0; $i<$subj_count; $i++) {
$opt = $options[$i];
$opt_count = count($opt);
$disabled = '';
if($opt_count) {
$seq = $i + 1;
if($i > 0)
$disabled = ' disabled="disabled"';
$str .= '<tr>'.PHP_EOL;
$str .= '<th><label for="it_option_'.$seq.'">'.$subj[$i].'</label></th>'.PHP_EOL;

$select = '<select id="it_option_'.$seq.'" class="it_option"'.$disabled.'>'.PHP_EOL;
$select .= '<option value="">선택</option>'.PHP_EOL;
for($k=0; $k<$opt_count; $k++) {
$opt_val = $opt[$k];
if(strlen($opt_val)) {
$select .= '<option value="'.$opt_val.'">'.$opt_val.'</option>'.PHP_EOL;
}
}
$select .= '</select>'.PHP_EOL;

$str .= '<td>'.$select.'</td>'.PHP_EOL;
$str .= '</tr>'.PHP_EOL;
}
}
} else {
$str .= '<tr>'.PHP_EOL;
$str .= '<th><label for="it_option_1">'.$subj[0].'</label></th>'.PHP_EOL;

$select = '<select id="it_option_1" class="it_option">'.PHP_EOL;
$select .= '<option value="">선택</option>'.PHP_EOL;
for($i=0; $row=sql_fetch_array($result); $i++) {
if($row['io_price'] >= 0)
$price = '&nbsp;&nbsp;+ '.number_format($row['io_price']).'원';
else
$price = '&nbsp;&nbsp; '.number_format($row['io_price']).'원';

if($row['io_stock_qty'] < 1)
$soldout = '&nbsp;&nbsp;[품절]';
else
$soldout = '';

$select .= '<option value="'.$row['io_id'].','.$row['io_price'].','.$row['io_stock_qty'].'">'.$row['io_id'].$price.$soldout.'</option>'.PHP_EOL;
}
$select .= '</select>'.PHP_EOL;

$str .= '<td>'.$select.'</td>'.PHP_EOL;
$str .= '</tr>'.PHP_EOL;
}

return $str;
}

//#######################################################################
// 아래의 소스로 변경해주세요^^
//#########################################################################
// 옵션선택목록 만들기
for($i=0; $i<$subj_count; $i++) {
$opt = $options[$i];
$opt_count = count($opt);
$disabled = '';
if($opt_count) {
$seq = $i + 1;
if($i > 0)
$disabled = ' disabled="disabled"';
$str .= '<tr>'.PHP_EOL;
$str .= '<th><label for="it_option_'.$seq.'">'.$subj[$i].'</label></th>'.PHP_EOL;

$select = '<select id="it_option_'.$seq.'" class="it_option"'.$disabled.'>'.PHP_EOL;
$select .= '<option value="">[필수] 선택하세요</option>'.PHP_EOL;
for($k=0; $k<$opt_count; $k++) {
$opt_val = $opt[$k];
if(strlen($opt_val)) {
$select .= '<option value="'.$opt_val.'">'.$opt_val.'</option>'.PHP_EOL;
}
}
$select .= '</select>'.PHP_EOL;

$str .= '<td>'.$select.'</td>'.PHP_EOL;
$str .= '</tr>'.PHP_EOL;
}
}
} else {
$str .= '<tr>'.PHP_EOL;
$str .= '<th><label for="it_option_1">'.$subj[0].'</label></th>'.PHP_EOL;

$select = '<select id="it_option_1" class="it_option">'.PHP_EOL;
$select .= '<option value="">[필수] 선택하세요</option>'.PHP_EOL;
for($i=0; $row=sql_fetch_array($result); $i++) {
//옵션상품 가격이 올라갈때
if($row['io_price'] > 0)
$price = '&nbsp;(+'.number_format($row['io_price']).'원)';
//옵션상품 가격이 그대로일때
else if($row['io_price'] == 0)
$price = '&nbsp;';
//옵션상품 가격이 내려갈때
else
$price = '&nbsp;('.number_format($row['io_price']).'원)';

if($row['io_stock_qty'] < 1)
$soldout = '&nbsp;[품절]';
else
$soldout = '';

$select .= '<option value="'.$row['io_id'].','.$row['io_price'].','.$row['io_stock_qty'].'">'.$row['io_id'].$price.$soldout.'</option>'.PHP_EOL;
}
$select .= '</select>'.PHP_EOL;

$str .= '<td>'.$select.'</td>'.PHP_EOL;
$str .= '</tr>'.PHP_EOL;
}

return $str;
}
//################################################################################################

댓글 작성

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

로그인하기

댓글 6개

잘 됩니다 ^^
헌데 상품 옵션이 2개 이상인경우에는 첫번째거만 +0원이 제거되고 나머지는 +0 이 뜨는데
제외할수 없나요??
/shop/itemoption.php 파일의 for 문안에
if($row['io_price'] >= 0) => 이 부분을 if($row['io_price'] > 0) 으로 수정
물론 이것만 하면 안되고, 본문 내용처럼 0원 초과일때, 0원일때, 그 외일때..
이렇게 처리하면 2번째 옵션에서도 "+0원"이 안나오게 될 것입니다.

(+0원)을 없애기 위해 실제 적용해 보니, 총 3개 파일을 작업하셔야 되네요.
01. /shop/itemoption.php 파일의 for() 문에서
02. /js/shop.js 파일의 add_sel_option() 함수
03. /lib/shop.lib.php 파일의 get_item_options() 함수, print_item_options() 함수도 추가 수정이 필요합니다.
이렇게 3개 파일을 수정하시면, 셀렉트박스에서 옵션 0원을 선택시 하단의 선택된 내용 출력에서도 0원 출력이 안나오게 됩니다.
또한 장바구니 페이지에서도 +0원 출력이 제외됩니다.

소스 수정은
if($row['io_price'] >= 0)
else
이렇게 0원이상일때, 그외로 구성된 2가지 분기를

if($row['io_price'] > 0)
else if($row['io_price'] == 0)
else

이렇게 0원 초과, 0원일때, 그외(마이너스?)일때로 3가지 분기가 되게끔 수정하시면 됩니다.
저의 경우 0원일때 공백으로 처리하였고,

/lib/shop.lib.php 파일의 print_item_options() 함수에서는
if ($price_plus == "0") { // 옵션가격이 0원이라면 (+0원) 표시 제거
$str .= '<li>'.$row['ct_option'].' '.$row['ct_qty'].'개</li>'.PHP_EOL;
}
else {
$str .= '<li>'.$row['ct_option'].' '.$row['ct_qty'].'개 ('.$price_plus.display_price($row['io_price']).')</li>'.PHP_EOL;
}

이렇게 수정하였습니다. 테스트 결과 게시판, 개인결제 추가시에도 에러 발생은 없네요.
9년 전
수정하면 게시판이나 개인결재 추가할때 토큰 에러 남니다.
좋은 자료 감사하니다. ^^
감사합니다.
감사합니다.

게시글 목록

번호 제목
507
504
502
499
495
492
485
484
481
480
478
476
467
462
459
458
457
452
444
438
437
425
423
420
417
416
415
410
407
405