채택완료

[많이 질문하지만, 해결안되는 문제] 옵션가 문제

2020-01-19 (일) 11:44:32 9,293

신고가 접수되어 자동으로 블라인드 된 질문입니다.
원글을 보시려면 를 클릭하세요.

|

답변 13개

채택된 답변
+20 포인트

네이버도 추가금액 안내방식입니다

https://sir.kr/yc5_ps/950 이거를 말했던 겁니다. 이제라도 알아주소서.....^^ 행복합시다~

2020-01-26 (일) 10:52:52

* 약 1주일 되었는데, 어떠한 피드백도 없어서 미리보기는 삭제합니다.

2020-01-20 (월) 13:31:02

처리 방법은 다양한데, /lib/shop.lib.php 파일 수정으로 해봤습니다.

영카트 5.4.1.4 버전 기준으로, 949 라인부터의 소스 내용입니다.

★ 표시한 주석 라인 보면 됩니다.


선택된 옵션이 출력되는 부분은 생략,

옵션명과 가격 길이 구해서 조절하면 보기 좋게 출력되겠으나 생략,

오직 옵션 셀렉트박스에 표시되는 가격만 기본가+옵션가 처리입니다.

라이브러리 파일 수정이라 쇼핑몰 전체가 같은 방식으로 출력되니 주의.

기타 생략합니다.

- 미리보기 : 2020-01-20 오후 ~ 2020-01-26 오전까지 유지 / 피드백 없어서 삭제

Copy
// 상품 선택옵션
function get_item_options($it_id, $subject, $is_div='', $is_first_option_title='')
{
    global $g5, $it; // ★ $it 추가. 실행 시점에 상품 정보가 할당되어 있는 변수

    if(!$it_id || !$subject)
        return '';

    $sql = " select * from {$g5['g5_shop_item_option_table']} where io_type = '0' and it_id = '$it_id' and io_use = '1' order by io_no asc ";
    $result = sql_query($sql);
    if(!sql_num_rows($result))
        return '';

    $str = '';
    $subj = explode(',', $subject);
    $subj_count = count($subj);

    if($subj_count > 1) {
        $options = array();

        // 옵션항목 배열에 저장
        for($i=0; $row=sql_fetch_array($result); $i++) {
            $opt_id = explode(chr(30), $row['io_id']);

            for($k=0; $k<$subj_count; $k++) {
                if(!is_array($options[$k]))
                    $options[$k] = array();

                if($opt_id[$k] && !in_array($opt_id[$k], $options[$k]))
                    $options[$k][] = $opt_id[$k];
            }
        }

        // 옵션선택목록 만들기
        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"';

                if($is_div === 'div') {
                    $str .= '<div class="get_item_options">'.PHP_EOL;
                    $str .= '<label for="it_option_'.$seq.'" class="label-title">'.$subj[$i].'</label>'.PHP_EOL;
                } else {
                    $str .= '<tr>'.PHP_EOL;
                    $str .= '<th><label for="it_option_'.$seq.'" class="label-title">'.$subj[$i].'</label></th>'.PHP_EOL;
                }

                $select = '<select id="it_option_'.$seq.'" class="it_option"'.$disabled.'>'.PHP_EOL;

                $first_option_title = $is_first_option_title ? $subj[$i] : '선택';

                $select .= '<option value="">'.$first_option_title.'</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;

                if($is_div === 'div') {
                    $str .= '<span>'.$select.'</span>'.PHP_EOL;
                    $str .= '</div>'.PHP_EOL;
                } else {
                    $str .= '<td>'.$select.'</td>'.PHP_EOL;
                    $str .= '</tr>'.PHP_EOL;
                }
            }
        }
    } else {
        if($is_div === 'div') {
            $str .= '<div class="get_item_options">'.PHP_EOL;
            $str .= '<label for="it_option_1">'.$subj[0].'</label>'.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']).'원';

            */

            $price = '&nbsp;&nbsp; '.number_format($it['it_price']+$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;
        
        if($is_div === 'div') {
            $str .= '<span>'.$select.'</span>'.PHP_EOL;
            $str .= '</div>'.PHP_EOL;
        } else {
            $str .= '<td>'.$select.'</td>'.PHP_EOL;
            $str .= '</tr>'.PHP_EOL;
        }

    }

    return $str;
}

댓글에 이미지 첨부가 안돼서 답변으로 올립니다. 일단 글쓴이님 본인부터가 개별 상품의 [옵션]선택이랑 묶음상품의 [상품]선택을 구분하지 못하면서 이런 글을 올렸다는 것이 참 답답하네요. 밑의 화면은 죄측부터 각각 옥션과 지마켓의 [옵션] 기능입니다.

thumb-1794692591_1579482569.7228_730x649.png

언급한 내용은 상식도 아니거니와 오픈마켓이라는 특성 때문에 묶음상품이라는 기능을 지원하는 것 뿐이지, 영카트와 같은 소규모 쇼핑몰 솔루션에서는 지원할 이유가 없는 기능입니다. 만약 필요하다면 의뢰를 통해 추가로 개발해야하는 게 당연하죠.

더이상 답변이 의미가 없는 게시물 같으니 여기까지만 하겠습니다.

본인 힘으로 안되면 개발자에게 맡기는게 당연한겁니다. 

개발자가 있는 이유가 무엇인지 한번 생각해보시기 바랍니다.

이시간에,, 왜 이런걸루 이렇게 화가나셨는진 모르겠습니다만 위의 개발자분들과 같은 생각입니다.

옥션, 지마켓, 위메프 등 국내 유명 쇼핑몰들은 모두 옵션가에 추가금액 표기 방식일텐데, 무얼 근거로 상식이라 운운하는지 모르겠네요.

------------> 확인 해보시고 말씀하세요. 옵션가에 금액이 합해진(계산된) 금액으로 결국 표기된답니다.

<영카트 경우>

thumb-3690533954_1579431029.2502_730x332.jpg

<옥션 경우>

thumb-3690533954_1579431169.0217_730x441.jpg

옥션, 지마켓, 위메프 등 국내 유명 쇼핑몰들은 모두 옵션가에 추가금액 표기 방식일텐데, 무얼 근거로 상식이라 운운하는지 모르겠네요.

무슨 까닭으로 혼자 화가 난 것인지 모르겠으나

혼자 판단하고 결정내려서 혼자 화를 내고 있네요.

----------> 저는 화가 나지 않았는데요? 전화주시는 분들이랑 즐겁게 얘기 나누고 있습니다.

공감하는 부분도 있고, 공감 못하는 부분도 있고...이게 화가 날 일인가요?...??

============================ 

답은 무조건 " 계발자에게 의뢰하라" 

돈주고 하라는 것인데.....

============================

의뢰게시판이 있다보니 그누보드, 영카트가 개발자 덕에 수익을 얻는 곳이거나

개발자를 위한 사이트로 생각하고 있으신 것 같은데 대단한 판단착오 입니다

----------> 판단을 내리지 않았습니다.

영카트 개발자가 만든 원천소스가 가격+옵션가로 표시하도록 되어있으니

그것을 그대로 사용할 사람은 그냥 사용하는 것이고 방식을 바꾸고 싶은 사람은

변경해서 사용하도록 하는 공개소스인 것이지 누구를 위해서 그렇게 만든 것이 아닙니다

----------> 네 알고 있습니다. 그렇게 만든 부분을  그래서 다양한 분들과 수정을 하기 위해 도움을 주고 받고자 하는 것입니다. 알려주고 싶은 분이 있으시다면 알려주시고, 못알려주겠다는 사람은 안알려주면되고, 돈받고 알려주겠다는 사람은 돈받고 알려주면 되겠지요...

중요한건 누구도 누구의 생각과 행동을 그르다고 할수 는 없는 것입니다.

물론,  운영하는 분의 취향마다 다르고, 취급품목에 따라, 옵션가가 현재 상태가 나은것도 있을것입니다. 알고 있습니다.

하지만, 이건 저의 경우에 필요한 옵션가 표현 부분이고, 몇몇 분의 얘기를 들어보니, 굉장히 힘든 작업이라는 것을 유선상

통화하였습니다. 전화가 꽤 와서....전화번호를 지우려고 하는데.....댓글이 달려서 수정이 안되네요...전화는 확실한분 아니시면 자제 바랍니다.....개발자의 힘든 노력을 쉽게 얻으려고 한다는 말도 하시는데, 도움을 바란다는 것이고, 단순히 이 부분이 오래전부터 사람들이 필요하다고 하는데....왜 답을 주시 않을까? 누구도.......그것이 복잡한 14가지 이상의 파일을 손봐야 한다는 것을 알아가며, 그래 이건 내가 못하겠다.......그걸 하나하나 알려주는 사람이 뭐 때문에  그짓을 할까....없을 듯도....진심으로 이해가 갑니다.....

답변을 작성하려면 로그인이 필요합니다.