네비게이션 4차 노출방법

네비게이션 4차 노출방법

QA

네비게이션 4차 노출방법

본문

/theme/basic/shop/basic/navigation.skin.php

 


<?php
$navi_datas = $ca_ids = array();
$is_item_view = (isset($it_id) && isset($it) && isset($it['it_id']) && $it_id === $it['it_id']) ? true : false;
if( !$is_item_view && $ca_id ){ 
    $navi_datas = get_shop_navigation_data(true, $ca_id);
    $ca_ids = array(
        'ca_id' => substr($ca_id,0,2),
        'ca_id2' => substr($ca_id,0,4),
        'ca_id3' => substr($ca_id,0,6),
        'ca_id4' => substr($ca_id,0,8)
        );
} else if( $is_item_view && isset($it) && is_array($it) ) { 
    $navi_datas = get_shop_navigation_data(true, $it['ca_id']);
    $ca_ids = array(
        'ca_id' => substr($it['ca_id'],0,2),
        'ca_id2' => substr($it['ca_id'],0,4),
        'ca_id3' => substr($it['ca_id'],0,6),
        'ca_id4' => substr($it['ca_id'],0,8)
        );
}
?>
 
    <?php if ( is_array($navi_datas) && $navi_datas ){ ?>
        <?php if( isset($navi_datas[0]) && $navi_datas[0] ){ ?>
        <select class="shop_hover_selectbox category1">
            <?php foreach((array) $navi_datas[0] as $data ){ ?>
                <option value="<?php echo $data['ca_id']; ?>" data-url="<?php echo $data['url']; ?>" <?php if($ca_ids['ca_id'] === $data['ca_id']) echo 'selected'; ?>><?php echo $data['ca_name']; ?></option>
            <?php } ?>
        </select>
        <?php } ?>
        <?php if( isset($navi_datas[1]) && $navi_datas[1] ){ ?>
        <!-- <i class="dividing-line fa fa-angle-right" aria-hidden="true"></i> -->
        <i class="dividing-line xi-angle-right-thin" aria-hidden="true"></i>
        <select class="shop_hover_selectbox category2">
            <?php foreach((array) $navi_datas[1] as $data ){ ?>
                <option value="<?php echo $data['ca_id']; ?>" data-url="<?php echo $data['url']; ?>" <?php if($ca_ids['ca_id2'] === $data['ca_id']) echo 'selected'; ?>><?php echo $data['ca_name']; ?></option>
            <?php } ?>
        </select>
        <?php } ?>
        <?php if( isset($navi_datas[2]) && $navi_datas[2] ){ ?>
        <!-- <i class="dividing-line fa fa-angle-right" aria-hidden="true"></i> -->
        <i class="dividing-line xi-angle-right-thin" aria-hidden="true"></i>
        <select class="shop_hover_selectbox category3">
            <?php foreach((array) $navi_datas[2] as $data ){ ?>
                <option value="<?php echo $data['ca_id']; ?>" data-url="<?php echo $data['url']; ?>" <?php if($ca_ids['ca_id3'] === $data['ca_id']) echo 'selected'; ?>><?php echo $data['ca_name']; ?></option>
            <?php } ?>
        </select>
        <?php } ?>
        <?php if( isset($navi_datas[3]) && $navi_datas[3] ){ ?>
        <!-- <i class="dividing-line fa fa-angle-right" aria-hidden="true"></i> -->
        <i class="dividing-line xi-angle-right-thin" aria-hidden="true"></i>
        <select class="shop_hover_selectbox category4">
            <?php foreach((array) $navi_datas[3] as $data ){ ?>
                <option value="<?php echo $data['ca_id']; ?>" data-url="<?php echo $data['url']; ?>" <?php if($ca_ids['ca_id4'] === $data['ca_id']) echo 'selected'; ?>><?php echo $data['ca_name']; ?></option>
            <?php } ?>
        </select>
        <?php } ?>
    <?php }  ?>

 

/lib/shop.data.lib.php

 


<?php
function get_shop_navigation_data($is_cache, $ca_id, $ca_id2='', $ca_id3='', $ca_id4=''){
    
    $all_categories = get_shop_category_array($is_cache);
    $datas = array();
    
    if( strlen($ca_id) >= 2 && $all_categories ){
        foreach((array) $all_categories as $category1 ){
            $datas[0][] = $category1['text'];
        }
    }
    $select_ca_id = $ca_id2 ? $ca_id2 : $ca_id;
    $item_categories2 = $select_ca_id ? get_shop_category_by($is_cache, 'ca_id', $select_ca_id) : array();
    if( strlen($select_ca_id) >= 4 && $item_categories2 ){
        foreach((array) $item_categories2 as $key=>$category2 ){
            if( $key === 'text' ) continue;
            $datas[1][] = $category2['text'];
        }
    }
    $select_ca_id = $ca_id3 ? $ca_id3 : $ca_id;
    $item_categories3 = $select_ca_id ? get_shop_category_by($is_cache, 'ca_id', $select_ca_id) : array();
    if( strlen($select_ca_id) >= 6 && $item_categories3 && isset($item_categories3[substr($select_ca_id,0,4)]) ){
        $sub_categories = $item_categories3[substr($select_ca_id,0,4)];
        foreach((array) $sub_categories as $key=>$category3 ){
            if( $key === 'text' ) continue;
            $datas[2][] = $category3['text'];
        }
    }
    $select_ca_id = $ca_id4 ? $ca_id4 : $ca_id;
    $item_categories4 = $select_ca_id ? get_shop_category_by($is_cache, 'ca_id', $select_ca_id) : array();
    if( strlen($select_ca_id) >= 8 && $item_categories4 && isset($item_categories4[substr($select_ca_id,0,6)]) ){
        $sub_categories = $item_categories4[substr($select_ca_id,0,6)];
        foreach((array) $sub_categories as $key=>$category4 ){
            if( $key === 'text' ) continue;
            $datas[3][] = $category4['text'];
        }
    }
    return $datas;
}
 
 
function get_shop_category_array($is_cache=false){
    static $categories = array();
    
    $categories = run_replace('get_shop_category_array', $categories, $is_cache);
    if( $is_cache && !empty($categories) ){
        return $categories;
    }
    $result = sql_query(get_shop_category_sql('', 2));
    for($i=0; $row=sql_fetch_array($result); $i++) {
        $row['url'] = shop_category_url($row['ca_id']);
        $categories[$row['ca_id']]['text'] = $row;
        
        if( $row['ca_id'] ){
            $result2 = sql_query(get_shop_category_sql($row['ca_id'], 4));
            for($j=0; $row2=sql_fetch_array($result2); $j++) {
                $row2['url'] = shop_category_url($row2['ca_id']);
                $categories[$row['ca_id']][$row2['ca_id']]['text'] = $row2;
                
                if( $row2['ca_id'] ){
                    $result3 = sql_query(get_shop_category_sql($row2['ca_id'], 6));
                    for($k=0; $row3=sql_fetch_array($result3); $k++) {
                        $row3['url'] = shop_category_url($row3['ca_id']);
                        $categories[$row['ca_id']][$row2['ca_id']][$row3['ca_id']]['text'] = $row3;
                        if( $row3['ca_id'] ){
                            $result4 = sql_query(get_shop_category_sql($row3['ca_id'], 8));
                            for($m=0; $row4=sql_fetch_array($result4); $m++) {
                                $row4['url'] = shop_category_url($row4['ca_id']);
                                $categories[$row['ca_id']][$row2['ca_id']][$row3['ca_id']][$row4['ca_id']]['text'] = $row4;
                            }
                        }   //end if
                    }
                }   //end if
            }   //end for
        }   //end if
    }   //end for
    
    return $categories;
}
?>

 

 

 

수정 부분들 입니다. 왜 4차 노출이 안되는건지 모르겠습니다.

이 질문에 댓글 쓰기 :

답변 1

[AI 답변]

 

제가 확인한 바로는 다음과 같은 부분이 잘못된 것으로 보입니다.

  1. $datas 배열의 인덱스가 0, 1, 2, 3으로 하드코딩되어 있어, 해당 인덱스에 해당하는 카테고리 레벨만을 처리하고 있습니다. 만약 레벨이 더 추가되거나, 다양한 레벨을 처리해야 하는 경우에는 코드를 수정해야 합니다. 더 유연한 방식으로 처리하려면, 배열의 인덱스를 동적으로 생성하거나, 다차원 배열 대신 연관 배열을 사용하는 것이 좋을 수 있습니다.

  2. 각각의 foreach 루프에서 continue 문을 사용하여 $key 값이 'text'인 경우에는 무시하고 넘어가고 있습니다. 이는 $item_categories2, $item_categories3, $item_categories4 배열에서 'text'라는 키를 가진 값들이 존재하는 것으로 가정하고 처리하고 있습니다. 이 부분이 잘못된 경우에는 예기치 않은 결과가 발생할 수 있습니다. 배열의 구조와 데이터에 따라 적절한 처리를 해주어야 합니다.

  3. $select_ca_id 변수를 초기화할 때, 조건문으로 $ca_id2$ca_id3이 존재하는 경우에만 해당 값을 대입하고, 그렇지 않은 경우에는 $ca_id를 대입하는 로직이 있습니다. 이는 $ca_id2$ca_id3이 빈 문자열('')인 경우에도 해당 값을 대입하게 되므로, 원하는 결과를 얻지 못할 수 있습니다. $ca_id2$ca_id3이 빈 문자열인 경우에도 적절한 처리를 해주어야 합니다.

위의 부분들을 확인하고 필요에 따라 수정하시면 될 것 같습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 50
QA 내용 검색

회원로그인

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