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

네비게이션 4차 노출방법 채택완료

jacobblack 2년 전 조회 3,315

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

 

</p>

<p><?php</p>

<p>$navi_datas = $ca_ids = array();

$is_item_view = (isset($it_id) && isset($it) && isset($it['it_id']) && $it_id === $it['it_id']) ? true : false;</p>

<p>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)

        );

}</p>

<p>?></p>

<p> </p>

<p>    <?php if ( is_array($navi_datas) && $navi_datas ){ ?></p>

<p>        <?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 }  ?></p>

<p>

 

/lib/shop.data.lib.php

 

</p>

<p><?php</p>

<p>function get_shop_navigation_data($is_cache, $ca_id, $ca_id2='', $ca_id3='', $ca_id4=''){

    

    $all_categories = get_shop_category_array($is_cache);</p>

<p>    $datas = array();

    

    if( strlen($ca_id) >= 2 && $all_categories ){

        foreach((array) $all_categories as $category1 ){

            $datas[0][] = $category1['text'];

        }

    }</p>

<p>    $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();</p>

<p>    if( strlen($select_ca_id) >= 4 && $item_categories2 ){

        foreach((array) $item_categories2 as $key=>$category2 ){

            if( $key === 'text' ) continue;</p>

<p>            $datas[1][] = $category2['text'];

        }

    }</p>

<p>    $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();</p>

<p>    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)];</p>

<p>        foreach((array) $sub_categories as $key=>$category3 ){

            if( $key === 'text' ) continue;</p>

<p>            $datas[2][] = $category3['text'];

        }

    }</p>

<p>    $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();</p>

<p>    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)];</p>

<p>        foreach((array) $sub_categories as $key=>$category4 ){

            if( $key === 'text' ) continue;</p>

<p>            $datas[3][] = $category4['text'];

        }

    }</p>

<p>    return $datas;

}</p>

<p> </p>

<p> </p>

<p>function get_shop_category_array($is_cache=false){</p>

<p>    static $categories = array();

    

    $categories = run_replace('get_shop_category_array', $categories, $is_cache);</p>

<p>    if( $is_cache && !empty($categories) ){

        return $categories;

    }</p>

<p>    $result = sql_query(get_shop_category_sql('', 2));</p>

<p>    for($i=0; $row=sql_fetch_array($result); $i++) {</p>

<p>        $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));</p>

<p>            for($j=0; $row2=sql_fetch_array($result2); $j++) {</p>

<p>                $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++) {</p>

<p>                        $row3['url'] = shop_category_url($row3['ca_id']);

                        $categories[$row['ca_id']][$row2['ca_id']][$row3['ca_id']]['text'] = $row3;</p>

<p>                        if( $row3['ca_id'] ){

                            $result4 = sql_query(get_shop_category_sql($row3['ca_id'], 8));

                            for($m=0; $row4=sql_fetch_array($result4); $m++) {</p>

<p>                                $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;

}</p>

<p>?></p>

<p>

 

 

 

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

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

답변 1개

채택된 답변
+20 포인트
J
2년 전

[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이 빈 문자열인 경우에도 적절한 처리를 해주어야 합니다.

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

로그인 후 평가할 수 있습니다

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

답변을 작성하려면 로그인이 필요합니다.

로그인