상품분류 카테고리별 분리하기 > 영카트5 팁자료실

영카트5 팁자료실

상품분류 카테고리별 분리하기 정보

상품분류 카테고리별 분리하기

첨부파일

영카트분류카테고리분리하기.zip (21.0K) 83회 다운로드 2019-11-13 14:02:43

본문

영카드에서 1차 2차 3차 카테고리만 항목만 보여 줄 수 있게 한번 만들어 봤습니다.
수정한 페이지는 itemlist.php 와 itemform.php 페이지를 변경했습니다.
추가한 파일은 get_cate_opt.php 파일에서 해당 옵션을 생성하고 해당 분류값을 가져오기 오기위핸 category.lib.php을 호출하여 사용합니다.

/******* itemlist.php 페이지 *******/
include_once(G5_LIB_PATH.'/category.lib.php'); //카테고리라이브러 호출

<td colspan="5" class="td_sort">
            <label for="ca_id_<?php echo $i; ?>" class="sound_only"><?php echo get_text($row['it_name']); ?> 기본분류</label>
        <!-- 1차카테고리 가져오기 class를 cate1_cha로 설정 data-num은 해당 리스트 항목번호를 가져오기위해설정 data-dep는 현재 카테고리차수 -->
            <select name="ca_id[<?php echo $i; ?>]" id="ca_id_<?php echo $i; ?>" class="cate1_cha" data-num="<?=$i?>" data-dep="1">
                <?php //echo conv_selected_option($ca_list, $row['ca_id']); ?>
              <!-- 1차옵션을 가져오는 함수호출 첫번째 매개변수는 설정된 ca_id값, 두번째 매개변수는 저장된 ca_id값 -->
                <?=get_cate_opt($row['ca_id'],$row['ca_id'])?>
            </select>
            <label for="ca_id2_<?php echo $i; ?>" class="sound_only"><?php echo get_text($row['it_name']); ?> 2차분류</label>
            <select name="ca_id2[<?php echo $i; ?>]" id="ca_id2_<?php echo $i; ?>" class="cate2_cha" data-num="<?=$i?>" data-dep="2">
                <?
                if($row['ca_id2']) {//저장된 2차카테고리가 있는경우
                    echo get_cate_opt($row['ca_id2'], $row['ca_id2']);
                }else{//저장된 2차카테고리가 없는 경우 1차카테고리값을 가져와서 2차카테고리값을 만듬
                    echo get_cate_opt($row['ca_id'].'10','');
                }
                ?>
            </select>
            <label for="ca_id3_<?php echo $i; ?>" class="sound_only"><?php echo get_text($row['it_name']); ?> 3차분류</label>
            <select name="ca_id3[<?php echo $i; ?>]" id="ca_id3_<?php echo $i; ?>" class="cate3_cha" data-num="<?=$i?>" data-dep="3">
                <?
                if($row['ca_id3']) {//저장된 3차카테고리가 있는경우
                    echo get_cate_opt($row['ca_id3'], $row['ca_id3']);
                }elseif($row['ca_id2']){//저장된 3차카테고리가 없는 경우 1차카테고리값을 가져와서 3차카테고리값을 만듬
                    echo get_cate_opt($row['ca_id'].'1010','');
                }
                ?>
            </select>
        </td>

<script>
$(function() {
    //2차분류 3차분류 가져오기
    $(".cate1_cha,.cate2_cha,.cate3_cha").change(function(){
        //변경한 객체 id
      var obj_id =$(this).attr('id');
        //변경한 객체 리스트 번호
      var obj_num =$(this).data('num');
        //변경한 객체 카테고리 차수
      var obj_dep =$(this).data('dep');
      //변경한 객체 카테고리값
      var obj_sel =$(this).val();
      get_cate_option(obj_sel,obj_dep,obj_id,obj_num);

    });
    $(".itemcopy").click(function() {
        var href = $(this).attr("href");
        window.open(href, "copywin", "left=100, top=100, width=300, height=200, scrollbars=0");
        return false;
    });
});
//분류값을 가져오기 위한 함수
function get_cate_option(ca_id,dep,id='',num=''){
    $.ajax({
        type:"POST",
        url    : "./get_cate_opt.php",
        data    : "ca_id="+ca_id+"&dep="+dep,
        cache  : false,
        async: false,

        success : function(data) {
            add_id1 = dep+1;
            add_id2 = dep+2;
            $("#ca_id"+add_id1+"_"+num).empty();
            $("#ca_id"+add_id2+"_"+num).empty();

            data_array = JSON.parse(data);


            $("#ca_id"+add_id1+"_"+num).html(data_array.opt1);
            $("#ca_id"+add_id2+"_"+num).html(data_array.opt2);
        },
        error:function(request,status,error){
            alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
        }
    });
}
</script>

/****** itemform.php 페이지********/
include_once(G5_LIB_PATH.'/iteminfo.lib.php');//카테고리라이브러 호출

<tr>
            <th scope="row"><label for="ca_id">기본분류</label></th>
            <td>
                <?
                if($w==""){
                //신규등록일때 1차 카테고리 가져오기
                    $ca =sql_fetch("select ca_name,ca_id from g5_shop_category where length(ca_id)=2 order by ca_order,ca_id limit 1");
                    $category1 = $ca['ca_id'];//1차카테고리
                }else
                    $category1 = $it['ca_id']; //1차카테고리

                ?>
                <?php if ($w == "") echo help("기본분류를 선택하면, 판매/재고/HTML사용/판매자 E-mail 등을, 선택한 분류의 기본값으로 설정합니다."); ?>
                <select name="ca_id" id="ca_id" onchange="categorychange(this.form)"  class="cate1_cha" data-num="<?=$i?>" data-dep="1">
                    <!--<option value="">선택하세요</option>
                    --><?php /*echo conv_selected_option($category_select, $it['ca_id']); */?>
                  <!-- 1차카테고리 분류 호출 -->
                    <?=get_cate_opt($category1,$it['ca_id'])?>
                </select>
                <script>
                    var ca_use = new Array();
                    var ca_stock_qty = new Array();
                    //var ca_explan_html = new Array();
                    var ca_sell_email = new Array();
                    var ca_opt1_subject = new Array();
                    var ca_opt2_subject = new Array();
                    var ca_opt3_subject = new Array();
                    var ca_opt4_subject = new Array();
                    var ca_opt5_subject = new Array();
                    var ca_opt6_subject = new Array();
                    <?php echo "\n$script"; ?>
                </script>
            </td>
        </tr>



        <?php for ($i=2; $i<=3; $i++) { //2차3차 카테고리 가져오기?>
        <tr>
            <th scope="row"><label for="ca_id<?php echo $i; ?>"><?php echo $i; ?>차 분류</label></th>
            <td>
                <?php echo help($i.'차 분류는 기본 분류의 하위 분류 개념이 아니므로 기본 분류 선택시 해당 상품이 포함될 최하위 분류만 선택하시면 됩니다.'); ?>
                <select name="ca_id<?php echo $i; ?>" id="ca_id<?php echo $i; ?>" class="cate2_cha" data-num="<?=$i?>" data-dep="<?=$i?>">
                    <?
                    if($i =="2"){
                        if($it['ca_id2']) { //2차 카테고리가 있을경우
                            echo get_cate_opt($it['ca_id2'], $it['ca_id2']);
                        }else{//2차 카테고리가 없을경우
                            echo get_cate_opt($ca['ca_id'].'10','');
                        }
                    }else{
                        if($it['ca_id3']) {//3차 카테고리가 있을경우
                            echo get_cate_opt($it['ca_id3'], $it['ca_id3']);
                        }elseif($row['ca_id2']){ //3차카테고리가 없을경우
                            echo get_cate_opt($ca['ca_id'].'1010','');
                        }
                    }

                    ?>
                </select>
            </td>
        </tr>
        <?php } ?>

<script>
$(function() {
    //2차분류 3차분류 가져오기
    $(".cate1_cha,.cate2_cha,.cate3_cha").change(function(){
        //변경한 객체 id
        var obj_id =$(this).attr('id');
        //변경한 객체 리스트 번호
        var obj_num =$(this).data('num');
        //변경한 객체 카테고리 차수
        var obj_dep =$(this).data('dep');
        //변경한 객체 카테고리값
        var obj_sel =$(this).val();
        get_cate_option(obj_sel,obj_dep,obj_id,obj_num);

    });
    $(".itemcopy").click(function() {
        var href = $(this).attr("href");
        window.open(href, "copywin", "left=100, top=100, width=300, height=200, scrollbars=0");
        return false;
    });
});

function get_cate_option(ca_id,dep,id='',num=''){
    $.ajax({
        type:"POST",
        url    : "./get_cate_opt.php",
        data    : "ca_id="+ca_id+"&dep="+dep,
        cache  : false,
        async: false,

        success : function(data) {
            add_id1 = dep+1;
            add_id2 = dep+2;
            $("#ca_id"+add_id1).empty();
            $("#ca_id"+add_id2).empty();

            data_array = JSON.parse(data);


            $("#ca_id"+add_id1).html(data_array.opt1);
            $("#ca_id"+add_id2).html(data_array.opt2);
        },
        error:function(request,status,error){
            alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
        }
    });
}
</script>

필요에 의해서 한번 만들어 봤습니다. 충분한 테스트가 이루어 지지 않아 버그가 있을 수 있습니다.
실력이 부족해서 깔끔하지 못한점 먼저 양해 부탁드립니다.
추천
3

댓글 2개

첨부한 파일에서 itemform.php 페이지
/분류순서 변경시 틀어짐 방지위해 추가
$sql = " select * from {$g5['g5_shop_category_table']} ";

if ($is_admin != 'super')
    $sql .= " where ca_mb_id = '{$member['mb_id']}' ";
$sql .= " order by ca_order, ca_id ";  ==> 이부분이 오탈자가 있어서 첨부파일을 수정해서 다시 올렸습니다.
전체 392
영카트5 팁자료실 내용 검색

회원로그인

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