상품옵션 금액표시 옥션처럼 변경 (상품옵션 (+0)원 없애기) > 영카트5 팁자료실

영카트5 팁자료실

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

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

본문

상품옵션에서 추가금액이 표시되는 데요^^
추가금액이 없는데도 +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;
}
//################################################################################################
추천
0

댓글 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;
}

이렇게 수정하였습니다. 테스트 결과 게시판, 개인결제 추가시에도 에러 발생은 없네요.
전체 391
영카트5 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT