영카트 상품상세, 리스트 페이지에서 클래스 추가

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
영카트 상품상세, 리스트 페이지에서 클래스 추가

QA

영카트 상품상세, 리스트 페이지에서 클래스 추가

답변 1

본문

안녕하세요,

 

      <ul class="gnb">

 

        <?php

        ob_start();

        $menu_datas = get_menu_db(0, true);

        $gnb_zindex = 999; // gnb_1dli z-index 값 설정용

        $i = 0;

        foreach( $menu_datas as $row ){

            if( empty($row) ) continue;

            $add_class = (isset($row['sub']) && $row['sub']) ? '[[ML]]' : '';

        ?>

        <li class="depth1 " style="z-index:<?php echo $gnb_zindex--; ?>" >

            <a MO href="<?php echo $row['me_link']; ?>" target="_<?php echo $row['me_target']; ?>" class="depth1_a <?=$add_class; ?>"><?php echo $row['me_name'] ?><?=$add_class ? "[[MO]]" : ""; ?></a>

            <?php

            $k = 0;

            foreach( (array) $row['sub'] as $row2 ){

 

                if( empty($row2) ) continue;

 

                if($k == 0)

                    echo '<ul class="snb">'.PHP_EOL;

            ?>

                <li class="depth2"><a href="<?php echo $row2['me_link']; ?>" target="_<?php echo $row2['me_target']; ?>" class=""><?php echo $row2['me_name'] ?></a></li>

            <?php

            $k++;

            }

            if($k > 0)

                echo '</ul>'.PHP_EOL;

            ?>

        </li>

        <?php

        $i++;

        }

 

        $top_menu = ob_get_contents();

        ob_end_clean();

 

        echo str_replace("[[MO]]","",$top_menu);

        ?>

      </ul>

 

위는 제 서브내비를 불러오기 위한 코드인데요.

 

 

depth1에 class on을 넣고싶습니다.

 

A, B, C 라는 상품 분류가 있고

 

A분류에는 aa 상품이 있다고 가정했을때

 

A분류 리스트 페이지에서도, aa상품 상세페이지에서도 A가 표시된 depth1에는 on 클래스를 추가하고싶습니다.

 

혹시 방법이 있는지요?

이 질문에 댓글 쓰기 :

답변 1

아래 코드 참고를 한번 해보시겠어요..

 

 

 

<ul class="gnb">
<?php
ob_start();
$menu_datas = get_menu_db(0, true);
$gnb_zindex = 999;
$i = 0;

// 현재 카테고리 정보 가져오기
$current_ca_id = '';
if (defined('_SHOP_')) {
    if ($it_id) {  // 상품 상세 페이지
        $sql = " SELECT ca_id FROM {$g5['g5_shop_item_table']} WHERE it_id = '$it_id' ";
        $row = sql_fetch($sql);
        $current_ca_id = $row['ca_id'];
    } else if ($ca_id) {  // 상품 리스트 페이지
        $current_ca_id = $ca_id;
    }
}

foreach ($menu_datas as $row) {
    if (empty($row)) continue;
    
    $add_class = (isset($row['sub']) && $row['sub']) ? '[[ML]]' : '';
    
    // 현재 메뉴가 활성화되어야 하는지 확인
    $is_active = false;
    
    // 메뉴 링크에서 ca_id 추출
    $menu_ca_id = '';
    if (preg_match('/ca_id=([^&]*)/', $row['me_link'], $matches)) {
        $menu_ca_id = $matches[1];
    }
    
    // 현재 카테고리와 메뉴의 카테고리가 일치하는지 확인
    if ($current_ca_id && $menu_ca_id) {
        // 대분류만 비교 (첫 2자리)
        if (substr($current_ca_id, 0, 2) === substr($menu_ca_id, 0, 2)) {
            $is_active = true;
        }
    }
    
    // on 클래스 추가
    $depth1_class = 'depth1' . ($is_active ? ' on' : '');
?>
    <li class="<?php echo $depth1_class; ?>" style="z-index:<?php echo $gnb_zindex--; ?>">
        <a href="<?php echo $row['me_link']; ?>" target="_<?php echo $row['me_target']; ?>" 
           class="depth1_a <?=$add_class; ?>">
            <?php echo $row['me_name'] ?><?=$add_class ? "[[MO]]" : ""; ?>
        </a>
        <?php
        $k = 0;
        foreach ((array) $row['sub'] as $row2) {
            if (empty($row2)) continue;
            
            if ($k == 0)
                echo '<ul class="snb">'.PHP_EOL;
        ?>
            <li class="depth2">
                <a href="<?php echo $row2['me_link']; ?>" target="_<?php echo $row2['me_target']; ?>" 
                   class="">
                    <?php echo $row2['me_name'] ?>
                </a>
            </li>
        <?php
            $k++;
        }
        if ($k > 0)
            echo '</ul>'.PHP_EOL;
        ?>
    </li>
<?php
    $i++;
}

$top_menu = ob_get_contents();
ob_end_clean();

echo str_replace("[[MO]]", "", $top_menu);
?>
</ul>

 

 

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 4
© SIRSOFT
현재 페이지 제일 처음으로