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

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

· 5년 전 · 4776 · 2
영카드에서 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>

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

댓글 작성

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

로그인하기

댓글 2개

5년 전
공유 감사합니다. 많은 도움이 됩니다.
5년 전
첨부한 파일에서 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 "; ==> 이부분이 오탈자가 있어서 첨부파일을 수정해서 다시 올렸습니다.

게시글 목록

번호 제목
1071
1061
1056
1046
1007
1006
1003
993
983
982
966
943
932
921
908
903
902
901
898
893
883
880
874
870
867
862
861
860
857
854