짧은 지식에 무자게 머리가 아픕니다. 고수님 해결해 주실 수있을까요? > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

짧은 지식에 무자게 머리가 아픕니다. 고수님 해결해 주실 수있을까요? 정보

짧은 지식에 무자게 머리가 아픕니다. 고수님 해결해 주실 수있을까요?

본문

영카트4를 디자인하면서 카테고리를 다른 방법으로 출력하게 디자인했습니다.

shop/boxcategory.inc.php 는 대분류 카테고리를 출력하는 문서입니다.

보통은 head.php에 include로 불러와서 모든 페이지에 분류가 뜨도록 만드는게 정석이죠.

그런데 하위카테고리(2차분류)로 이동해도 1차분류가 뜹니다.

제가 해결하고자 하는 방식은 2차 분류로 이동하였을 경우 해당 카테고리 메뉴와 3차 분류가 레이어로 뜨게 만들고 싶은데 웹마가 아닌 저로서는 엄청난 스트레스로 다가옵니다. ㅜㅜ

기존의 분류 방법
메뉴 출력 마우스오버  
분류10 분류1010  
  분류1020  
  분류1030  
분류20 분류2020  
  분류2030  
  분류2030  
분류30 분류3010  
  분류3020  
  분류3030  
2차 분류로 이동할 경우 (수정후)
메뉴출력 마우스오버  
분류1010 분류101010  
  분류101020  
  분류101030  
분류1020 분류102010  
  분류102020  
  분류102030  
분류1030 분류103010  
  분류103020  
  분류103030  

shop/boxcategory.inc.php 와 같은 파일을 복사해서 shop/boxcategory.sub.php 으로 만들고 하위 분류 이동시 shop/boxcategory.sub.php 을 불러오도록 하고 2차 분류가 출력되도록 수정하였습니다.

그런데... ㅜㅜ 2차 분류 전체가 출력됩니다. 해당 분류가 아닌 다른 분류 하위 카테고리까지... 크흑 ㅜㅜ

아래는 수정한 소스입니다. 부디 고수님들의 많은 도움과 조언 부탁드립니다. (__)

=================================================================
 
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
//
// 2단계 분류 레이어 표시
//
$menu = ""; // 메뉴 레이어 임시저장 변수 (처음엔 아무값도 없어야 합니다.)
$sub_menu_left = 120; // 2단계 메뉴 왼쪽 좌표 (1단계 좌표에서 부터)
$sub_menu_top = -22; // 2단계 메뉴 왼쪽 좌표 (1단계 좌표에서 부터)
?>
<table width=140 cellpadding=0 cellspacing=0 align=center>
<?
// 1단계 분류 판매가능한것만
$hsql = " select ca_id, ca_name from $g4[yc4_category_table] 
//       where length(ca_id) = '2' //수정전 
          where length(ca_id) = '4' //수정후
            and ca_use = '1'
          order by ca_id ";
$hresult = sql_query($hsql);
$hnum = @mysql_num_rows($hresult);
for ($i=0; $row=sql_fetch_array($hresult); $i++)
{
    // 2단계 분류
    $menubody = "";
    $onmouseover = "";
    $onmouseout  = "";
    $sql2 = " select ca_id, ca_name from $g4[yc4_category_table]
//            where LENGTH(ca_id) = '4'  //수정전
               where LENGTH(ca_id) = '6' //수정후
//             and SUBSTRING(ca_id,1,2) = '$row[ca_id]'  //수정전
                and SUBSTRING(ca_id,1,4) = '$row[ca_id]'  //수정후
                 and ca_use = '1'
               order by ca_id ";
    $result2 = sql_query($sql2);
    $hnum2 = @mysql_num_rows($hresult);
    for ($j=0; $row2=sql_fetch_array($result2); $j++)
    {
        $menubody .= "<tr height='22'><td>  · <a href='$g4[shop_path]/list.php?ca_id=$row2[ca_id]'>$row2[ca_name]</a></td></tr>";
        // 맨밑줄은 출력하지 않음
        if ($j < $hnum2)
//            $menubody .= "";                                                                                                                  // 서브메뉴 이미지 사용시
               $menubody .= "<tr><td align=center><img src='$g4[shop_img_path]/dot_line.gif'></td></tr>";    // 서브메뉴 텍스트 사용시
    }
    if ($menubody)
    {
        $onmouseover = " layer_view('smenu{$i}', 'smenu_layer{$i}', 'view', $sub_menu_left, $sub_menu_top, -22); ";
        $onmouseout  = " layer_view('smenu{$i}', 'smenu_layer{$i}', 'hide'); ";
    }
    $category_link = "<a href='$g4[shop_path]/list.php?ca_id=$row[ca_id]'>";
    echo "<tr id='smenu{$i}' onmouseover=\"$onmouseover\" onmouseout=\"$onmouseout\">";
    echo "<td height='22'>$category_link<img src=$g4[path]/img/button/$row[ca_id].gif border=0>";         // 메인메뉴 이미지 사용시
// echo "<td height='22'>  · $category_link$row[ca_name]\n";                                          // 메인메뉴 텍스트 사용시
    if ($menubody)
    {
        echo "<div id='smenu_layer{$i}' style='width:190px; display:none; position:absolute; FILTER: alpha(opacity=100); z-index:999;'>";
        echo "<table width='190' border='0' cellspacing='0' cellpadding='0'><tr><td><img src='$g4[path]/img/image/bg_left_md_top2.gif' width='190' height='20'></td></tr><tr><td>";
        echo "<table width='100%' border='0' cellspacing='0' cellpadding='0'><tr><td width='15' background='$g4[path]/img/image/bg_left_l05.gif'></td><td align='center' background='$g4[path]/img/image/bg_left_md_01.gif'>";
        echo "<table border=0 width=140 cellpadding=0 cellspacing=0>$menubody</table>";
        echo "</td><td width='15' background='$g4[path]/img/image/bg_left_r05.gif'></td></tr></table>";
        echo "</td></tr><tr><td><img src='$g4[path]/img/image/bg_left_md_btm2.gif' width='190' height='25'></td></tr></table>";
        echo "</div>";
    }
    echo "</td></tr>\n";
    if ($i<$hnum-1) // 맨밑줄은 출력하지 않음
        echo "";                                                                                                                   // 메인메뉴 이미지 사용시
//           echo "<tr><td align=center><img src='$g4[shop_img_path]/dot_line.gif'></td></tr>\n"; // 메인메뉴 텍스트 사용시
}
if ($i==0)
    echo "<tr><td height=50 align=center>등록된 자료가 없습니다.</td></tr>\n";
?>
</table>
<?=$menu?>
<script language="JavaScript">
var save_layer = null;
function layer_view(link_id, menu_id, opt, x, y)
{
    var link = document.getElementById(link_id);
    var menu = document.getElementById(menu_id);
    //for (i in link) { document.write(i + '<br/>'); } return;
    if (save_layer != null)
        save_layer.style.display = "none";
    if (opt == 'hide')
    {
        menu.style.display = 'none';
    }
    else
    {
        x = parseInt(x);
        y = parseInt(y);
        menu.style.left = get_left_pos(link) + x;
        menu.style.top  = get_top_pos(link) + link.offsetHeight + y;
        menu.style.display = 'block';
    }
    save_layer = menu;
}
</script>

댓글 전체

흐으윽... 드뎌 해결했습니다. ㅜㅜ

          where length(ca_id) = '2' // 2는 1차 분류 출력
          where length(ca_id) = '4' // 4는 2차분류 출력
            and ca_use = '1'
            and substring(ca_id,1,2) between '10' and '10' // 1차분류의 하위 분류 출력
          order by ca_id ";

and substring(ca_id,1,2) between '10' and '10' 이 함수를 넣었더니 되네요. 이거땜에 일주일을 헤맸는데... ㅠㅠ
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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