영카트 상품상세, 리스트 페이지에서 클래스 추가
본문
안녕하세요,
<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>