분류가 아주 많은경우 편리하게 선택해보자

old_catogory.jpg
분류입력방식을 자스로 다르게 변경해보았습니다
그림을 보시면
 
다른방식의 분류입력방법은 단계별 분류명이 모두 나옵니다
1단계 분류를 선택하면 그옆에 1단계 하위분류의 2단계 분류가 자동으로 나오는방식입니다.
 
분류가 아주 아주  많은 경우 세로로 너무 늘어나서 선택하기가 불편함이 있는데 이번 팁을 적용하면 눈의 피로를 덜어 줄겁니다.
 
적용방법:
 
1.첨부파일 inc_category.php를 /adm/shop_admin 폴더에 넣습니다
 
2./adm/shop_admin/itemform.php 이파일에서
<tr class=ht>
    <td>분류명</td>
    <td colspan=3>
이 자리에
</td></tr>
아래와 같이 변경합니다
 
<tr class=ht>
    <td>분류명</td>
    <td colspan=3>
<?
//############## ssh 새로운 분류입력방식
$this_codes[0]=$_COOKIE[ck_ca_id];
if ($w=="u") {
$this_codes[0]=$it[ca_id];
$this_codes[1]=$it[ca_id2];
$this_codes[2]=$it[ca_id3];
}
include_once("inc_category.php");
//############## ssh 새로운 분류입력방식
?>
</td></tr>
 
3./adm/shop_admin/itemformupdate.php에서
209행쯤 if ($w == "" || $w == "u") 이 소스 윗부분에 아래와 같이 추가합니다
 
//####################################### ssh 분류 다른 패턴시작
$add_categ_cnt=3;
$sql = " select max(ca_id) from $g4[yc4_category_table] ";
$m_qry8 = sql_query($sql);
if ($m_qry8){ //<-----
$rsp8 = mysql_fetch_row($m_qry8);
if ($rsp8>0) {   $max_levell=strlen($rsp8[0]); } else { $max_levell=-1; }
mysql_free_result($m_qry8);
} else { //---->
 $max_levell=-1;
}//---->
for ($step=0; $step <=($add_categ_cnt-1); $step=$step+1){ //===
for ($k=0; $k<=$max_levell; $k=$k+1){ //@@@
if (${"codes".$step.$k} !="") {  //~~~
$s_codes[$step]=${"codes".$step.$k};
}  //~~~
}//@@@
} //===
$ca_id=$s_codes[0];
$ca_id2=$s_codes[1];
$ca_id3=$s_codes[2];
//####################################### ssh 분류 다른 패턴끝
초보자는 반드시 파일을 백업받고 테스트 하세요
벌레잡으세요 아래 댓글중에 patch #1을 적용하시기바랍니다
 

첨부파일

old_catogory.jpg (44.1 KB)
0회 2007-01-13 04:06
inc_category.php (5.3 KB) 111회 2007-01-13 04:06
|

댓글 5개

자료 감사합니다.
그누사랑님께서 알려주신대로 했는데 구문오류가 나네요..ca_id.value값이 없다고 나오고,
leng[1]값은 넘어오고 Leng[2]~[4] 값이 null값으로 나와서 에러가 걸립니다.
itemform의 하단 스크립트도 손을 대봤는데 안되더군요..
저에겐 굉장한 레어아이템인데 잘안되네요.
도와주세요~ ㅠ.ㅠ
[patch #1]
하위분류가 없는 경우 벌레한마리 나왔군요
inc_category.php파일내용중에

-------------아래 부분찾아서요 ----------
?>
leng[<?=$k?>]=<?=$leng[$k]?>;
<?
$start_deep_cnt=$start_deep_cnt+1;
-----------------------------------------


---------------아래처럼 바꿔요------------
if (!$leng[$k]) $leng[$k]=0; //<=요게추가된것임
?>
leng[<?=$k?>]=<?=$leng[$k]?>;
<?
$start_deep_cnt=$start_deep_cnt+1;
--------------------------------------------

이렇게 고치면 됩니다. 버그 미쳐 못잡아서 미안합니다...^,.^
자료감사합니다..
저의 경우 대분류와 중분류 두개만사용해서 ca_id.value이 없다는 오류메시지가 계속 뜨더군요..
그래서 itemform.php에 있는 부분을 몇군데 주석처리했습니다.
처음에 한군데만 주석처리하니깐 되긴하는데 값을 넘겨줄때 에러가 뜨더군요. 그래서 하나더
질렀습니다...ㅋㅋㅋ

최하단부분의 스크립트부분에서 다음을 주석처리합니다.

function fitemformcheck(f)
{
// if (!f.ca_id.value) {
// alert("기본분류를 선택하십시오.");
// f.ca_id.focus();
// return false;
// }

if (f.w.value == "") {
if (f.codedup.value == '1') {
alert("코드 중복검사를 하셔야 합니다.");
return false;
}
}
<?=cheditor3('it_explan')."\n";?>
<?=cheditor3('it_head_html')."\n";?>
<?=cheditor3('it_tail_html')."\n";?>
return true;
}

//function categorychange(f)
//{
// var idx = f.ca_id.value;
//
// if (f.w.value == "" && idx)
// {
// f.it_use.checked = ca_use[idx] ? true : false;
//f.it_explan_html[ca_explan_html[idx]].checked = true;
// f.it_stock_qty.value = ca_stock_qty[idx];
// f.it_sell_email.value = ca_sell_email[idx];
// f.it_opt1_subject.value = ca_opt1_subject[idx];
// f.it_opt2_subject.value = ca_opt2_subject[idx];
// f.it_opt3_subject.value = ca_opt3_subject[idx];
// f.it_opt4_subject.value = ca_opt4_subject[idx];
// f.it_opt5_subject.value = ca_opt5_subject[idx];
// f.it_opt6_subject.value = ca_opt6_subject[idx];
// }
//}

// categorychange(document.fitemform);

// document.fitemform.it_name.focus();
</script>
아참! 빼먹었는데 그누사랑님 감사합니다~!!!
필요한 기능인데 utf-8에서는 작동을 하지 않네요~~
댓글을 작성하시려면 로그인이 필요합니다. 로그인

영카트4 팁자료실

영카트4와 관련된 팁과 자료를 공개하는 곳입니다. 영카트의 팁은 기본으로 제공하는 기능이 아니므로 고객지원의 대상이 아닙니다.

+
제목 글쓴이 날짜 조회
18년 전 조회 339
18년 전 조회 442
19년 전 조회 615
19년 전 조회 265
19년 전 조회 63
19년 전 조회 228
19년 전 조회 596
19년 전 조회 397
19년 전 조회 546
19년 전 조회 1,047
19년 전 조회 279
19년 전 조회 511
19년 전 조회 332
19년 전 조회 708
19년 전 조회 642
19년 전 조회 982
19년 전 조회 862
19년 전 조회 1,337
19년 전 조회 331
19년 전 조회 152
🐛 버그신고