레벨 5 이상에서만 보여지는 메뉴를 만들고 싶어요 ㅜ.ㅜ

레벨 5 이상에서만 보여지는 메뉴를 만들고 싶어요 ㅜ.ㅜ

QA

레벨 5 이상에서만 보여지는 메뉴를 만들고 싶어요 ㅜ.ㅜ

그누보드5(영카트) 버전

5.6.23

사용 PHP 버전

PHP8.2

본문

안녕하세요 

며칠을 끙끙거리다 결국 도움을 청하려고 이렇게 글을 올립니다. ㅜ.ㅜ

 

1889266648_1763095142.6705.gif

1889266648_1763095228.8885.jpg

 

나머지 메뉴는 모든 레벨에서 다 볼 수 있고 Menu와 거기에 딸린 서브 메뉴만 회원레벨 5 이상의 회원들에게만 보여주고 싶거든요.

 

열심히 찾아보며 까만도둑님께서 10년전쯤 전에 올려주신 팁이 있어 시도해봤지만 버젼이 달라서 그런지 안되더라구요 흑

https://sir.kr/g5_tip/2138
 

도와주세요~

감사합니다!!!

 

 

 

이 질문에 댓글 쓰기 :

답변 3


                <?php
                $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']) ? 'gnb_al_li_plus' : '';
                ?>
=>
                <?php
                $menu_datas = get_menu_db(0, true);
                if ($member['mb_level'] >= 5 | $is_admin == 'super') {
                $gnb_zindex = 999; // gnb_1dli z-index 값 설정용
                } else {
                $gnb_zindex = 9; // gnb_1dli z-index 값 설정용
                }
                $i = 0;
                foreach( $menu_datas as $row ){
                    if( empty($row) ) continue;
                    $add_class = (isset($row['sub']) && $row['sub']) ? 'gnb_al_li_plus' : '';
                ?>

https://sir.kr/g5_tip/2138 여기 방법입니다.

제가 에티테마를 구입해 설치했구요
theme/theme_54/navigation.php 파일에서 메뉴 부분을 수정해야 하는 것 같아요.


				<!-------------------------- 메뉴시작 -------------------------->
				<ul class="nav navbar-nav navbar-right">
					<?php
					$sql = " select *
									from {$g5['menu_table']}
									where me_use = '1'
									  and length(me_code) = '2'
									order by me_order, me_id ";
					$result = sql_query($sql, false);
					$gnb_zindex = 999; // gnb_1dli z-index 값 설정용
					$menu_datas = array();
					for ($i = 0; $row = sql_fetch_array($result); $i++) {
						$menu_datas[$i] = $row;

						$sql2 = " select *
										from {$g5['menu_table']}
										where me_use = '1'
										  and length(me_code) = '4'
										  and substring(me_code, 1, 2) = '{$row['me_code']}'
										order by me_order, me_id ";
						$result2 = sql_query($sql2);
						for ($k = 0; $row2 = sql_fetch_array($result2); $k++) {
							$menu_datas[$i]['sub'][$k] = $row2;
						}
					}
					$i = 0;
					foreach ($menu_datas as $row) {
						if (empty($row)) continue;
					?>
						<?php if (isset($row['sub']['0'])) { ?>

							<?php
							if (!empty($_GET["bo_table"])) {
								$a_menu = $_GET["bo_table"];
							} elseif (!empty($_GET["co_id"])) {
								$a_menu = $_GET["co_id"];
							} else {
								$a_menu = basename($_SERVER['PHP_SELF']);
							}
							if (defined('_INDEX_')) {
								$active = "";
							} else {
								$AT = sql_fetch("select me_code, me_name from {$g5['menu_table']} where me_link LIKE '%$a_menu%'");
								if (isset($AT['me_code'])) {
									$active_me_code = mb_substr($AT['me_code'], 0, 2);
									if ($active_me_code == $row['me_code']) {
										$active = "active";
									} else {
										$active = "";
									}
								} else {
									$active = "";
								}
							}
							?>
							<li class="dropdown">
								<a href="<?php echo $row['me_link']; ?>" class="dropdown-toggle <?php echo $active; ?>" target="_<?php echo $row['me_target']; ?>"><?php echo $row['me_name'] ?></a>
								<a href="#" class="dropdown-sub" data-toggle="dropdown"><i class="fa fa-angle-down"></i></a>
								<!-- 서브 -->
								<ul class="dropdown-menu multi-level" role="menu" aria-labelledby="dropdownMenu">
									<?php
									// 하위 분류
									$k = 0;
									foreach ((array) $row['sub'] as $row2) {

										if (empty($row2)) continue;

										if (!empty($_GET["bo_table"])) {
											$a_menu = $_GET["bo_table"];
										} elseif (!empty($_GET["co_id"])) {
											$a_menu = $_GET["co_id"];
										} else {
											$a_menu = basename($_SERVER['PHP_SELF']);
										}
										$currentUrl = $row2['me_link'];
										$parts = parse_url($currentUrl);
										$path = trim($parts['path'], '/');
										$segments = explode('/', $path);
										$pageName = end($segments);
										if ($a_menu == $pageName) {
											$sub_active = "color:#32c5d2";
										} else {
											$sub_active = "";
										}

									?>
										<li class="ko"><a tabindex="-1" href="<?php echo $row2['me_link']; ?>" target="_<?php echo $row2['me_target']; ?>" style="<?php echo $sub_active; ?>"> <?php echo $row2['me_name'] ?></a></li>

									<?php
										$k++;
									}   //end foreach $row2

									if ($k > 0)
										echo '</ul>' . PHP_EOL;
									?>
								<?php } else { ?>

									<?php
									if (!empty($_GET["bo_table"])) {
										$a_menu = $_GET["bo_table"];
									} elseif (!empty($_GET["co_id"])) {
										$a_menu = $_GET["co_id"];
									} else {
										$a_menu = basename($_SERVER['PHP_SELF']);
									}
									if (defined('_INDEX_')) {
										$active = "";
									} else {
										$AT = sql_fetch("select me_code, me_name from {$g5['menu_table']} where me_link LIKE '%$a_menu%'");
										if (isset($AT['me_code'])) {
											$active_me_code = mb_substr($AT['me_code'], 0, 2);
											if ($active_me_code == $row['me_code']) {
												$active = "active";
											} else {
												$active = "";
											}
										} else {
											$active = "";
										}
									}
									?>

									<li class="nav-item">
										<a class="nav-link <?php echo $active; ?>" href="<?php echo $row['me_link']; ?>" target="_<?php echo $row['me_target']; ?>"><?php echo $row['me_name'] ?></a>
									</li>
								<?php } ?>
							</li>

						<?php
						$i++;
					}   //end foreach $row

					if ($i == 0) {  ?>
							<li class="gnb_empty">
								메뉴 준비 중입니다.
								<?php if ($is_admin) { ?> <strong>관리자모드 &gt; 환경설정 &gt; 메뉴설정에서 설정하실 수 있습니다.</strong><?php } ?>
							</li>
						<?php } ?>
				</ul><!-- /ul -->


이 파일 중간에 알려주신 부분을 수정해서 넣어야 하는 것 같은데 잘못했는지 홈페이지가 아예 뜨질 않아서 다시 여쭤봐요 ㅜ.ㅜ 답변 감사드려요


				<!-------------------------- 메뉴시작 -------------------------->
				<ul class="nav navbar-nav navbar-right">
					<?php
					$sql = " select *
									from {$g5['menu_table']}
									where me_use = '1'
									  and length(me_code) = '2'
									order by me_order, me_id ";
					$result = sql_query($sql, false);
					$gnb_zindex = 999; // gnb_1dli z-index 값 설정용
					$menu_datas = array();
					for ($i = 0; $row = sql_fetch_array($result); $i++) {
						$menu_datas[$i] = $row;

						$sql2 = " select *
										from {$g5['menu_table']}
										where me_use = '1'
										  and length(me_code) = '4'
										  and substring(me_code, 1, 2) = '{$row['me_code']}'
										order by me_order, me_id ";
						$result2 = sql_query($sql2);
						for ($k = 0; $row2 = sql_fetch_array($result2); $k++) {
							$menu_datas[$i]['sub'][$k] = $row2;
						}
					}
					$i = 0;
					foreach ($menu_datas as $row) {
						if (empty($row)) continue;

                        // 조건: 레벨 4 미만이고 관리자도 아닐 때는 me_order >= 9 메뉴는 건너뛰기
                        if (($member['mb_level'] < 4 && $is_admin != 'super') && $row['me_order'] >= 9) {
                            continue; // 출력하지 않음
                        }

					?>
						<?php if (isset($row['sub']['0'])) { ?>

							<?php
							if (!empty($_GET["bo_table"])) {
								$a_menu = $_GET["bo_table"];
							} elseif (!empty($_GET["co_id"])) {
								$a_menu = $_GET["co_id"];
							} else {
								$a_menu = basename($_SERVER['PHP_SELF']);
							}
							if (defined('_INDEX_')) {
								$active = "";
							} else {
								$AT = sql_fetch("select me_code, me_name from {$g5['menu_table']} where me_link LIKE '%$a_menu%'");
								if (isset($AT['me_code'])) {
									$active_me_code = mb_substr($AT['me_code'], 0, 2);
									if ($active_me_code == $row['me_code']) {
										$active = "active";
									} else {
										$active = "";
									}
								} else {
									$active = "";
								}
							}
							?>
							<li class="dropdown">
								<a href="<?php echo $row['me_link']; ?>" class="dropdown-toggle <?php echo $active; ?>" target="_<?php echo $row['me_target']; ?>"><?php echo $row['me_name'] ?></a>
								<a href="#" class="dropdown-sub" data-toggle="dropdown"><i class="fa fa-angle-down"></i></a>
								<!-- 서브 -->
								<ul class="dropdown-menu multi-level" role="menu" aria-labelledby="dropdownMenu">
									<?php
									// 하위 분류
									$k = 0;
									foreach ((array) $row['sub'] as $row2) {

										if (empty($row2)) continue;

										if (!empty($_GET["bo_table"])) {
											$a_menu = $_GET["bo_table"];
										} elseif (!empty($_GET["co_id"])) {
											$a_menu = $_GET["co_id"];
										} else {
											$a_menu = basename($_SERVER['PHP_SELF']);
										}
										$currentUrl = $row2['me_link'];
										$parts = parse_url($currentUrl);
										$path = trim($parts['path'], '/');
										$segments = explode('/', $path);
										$pageName = end($segments);
										if ($a_menu == $pageName) {
											$sub_active = "color:#32c5d2";
										} else {
											$sub_active = "";
										}

									?>
										<li class="ko"><a tabindex="-1" href="<?php echo $row2['me_link']; ?>" target="_<?php echo $row2['me_target']; ?>" style="<?php echo $sub_active; ?>"> <?php echo $row2['me_name'] ?></a></li>

									<?php
										$k++;
									}   //end foreach $row2

									if ($k > 0)
										echo '</ul>' . PHP_EOL;
									?>
								<?php } else { ?>

									<?php
									if (!empty($_GET["bo_table"])) {
										$a_menu = $_GET["bo_table"];
									} elseif (!empty($_GET["co_id"])) {
										$a_menu = $_GET["co_id"];
									} else {
										$a_menu = basename($_SERVER['PHP_SELF']);
									}
									if (defined('_INDEX_')) {
										$active = "";
									} else {
										$AT = sql_fetch("select me_code, me_name from {$g5['menu_table']} where me_link LIKE '%$a_menu%'");
										if (isset($AT['me_code'])) {
											$active_me_code = mb_substr($AT['me_code'], 0, 2);
											if ($active_me_code == $row['me_code']) {
												$active = "active";
											} else {
												$active = "";
											}
										} else {
											$active = "";
										}
									}
									?>

									<li class="nav-item">
										<a class="nav-link <?php echo $active; ?>" href="<?php echo $row['me_link']; ?>" target="_<?php echo $row['me_target']; ?>"><?php echo $row['me_name'] ?></a>
									</li>
								<?php } ?>
							</li>

						<?php
						$i++;
					}   //end foreach $row

					if ($i == 0) {  ?>
							<li class="gnb_empty">
								메뉴 준비 중입니다.
								<?php if ($is_admin) { ?> <strong>관리자모드 &gt; 환경설정 &gt; 메뉴설정에서 설정하실 수 있습니다.</strong><?php } ?>
							</li>
						<?php } ?>
				</ul><!-- /ul -->

이렇게 한번 해보세요.. 참고용 입니다.


            <ul id="gnb_1dul">
                <li class="gnb_1dli gnb_mnal"><button type="button" class="gnb_menu_btn" title="전체메뉴"><i class="fa fa-bars" aria-hidden="true"></i><span class="sound_only">전체메뉴열기</span></button></li>
                <?php
                $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']) ? 'gnb_al_li_plus' : '';
                ?>
                <?php if($row['me_name'] == 'Menu') {  
                     if($is_member && $member['mb_level'] > 4) { 
                    ?>
                    <li class="gnb_1dli <?php echo $add_class; ?>" style="z-index:<?php echo $gnb_zindex--; ?>">
                        <a href="<?php echo $row['me_link']; ?>" target="_<?php echo $row['me_target']; ?>" class="gnb_1da">
                            <?php if($row['me_icons']) { ?>
                                <i class="fa <?php echo $row['me_icons'] ?> mr1 nav-cate-icon margin-right-5"></i>
                            <?php } ?>
                            <?php echo $row['me_name'] ?>
                        </a>
                        <?php
                        $k = 0;
                        foreach( (array) $row['sub'] as $row2 ){
                            if( empty($row2) ) continue; 
                            if($k == 0)
                                echo '<span class="bg">하위분류</span><div class="gnb_2dul"><ul class="gnb_2dul_box">'.PHP_EOL;
                        ?>
                            <li class="gnb_2dli"><a href="<?php echo $row2['me_link']; ?>" target="_<?php echo $row2['me_target']; ?>" class="gnb_2da"><?php echo $row2['me_name'] ?></a></li>
                        <?php
                        $k++;
                        }   //end foreach $row2
                        if($k > 0)
                            echo '</ul></div>'.PHP_EOL;
                        ?>
                    </li>
                 <?php }  ?>
               <?php } else {  ?>
                    <li class="gnb_1dli <?php echo $add_class; ?>" style="z-index:<?php echo $gnb_zindex--; ?>">
                        <a href="<?php echo $row['me_link']; ?>" target="_<?php echo $row['me_target']; ?>" class="gnb_1da">
                            <?php if($row['me_icons']) { ?>
                                <i class="fa <?php echo $row['me_icons'] ?> mr1 nav-cate-icon margin-right-5"></i>
                            <?php } ?>
                            <?php echo $row['me_name'] ?>
                        </a>
                        <?php
                        $k = 0;
                        foreach( (array) $row['sub'] as $row2 ){
                            if( empty($row2) ) continue; 
                            if($k == 0)
                                echo '<span class="bg">하위분류</span><div class="gnb_2dul"><ul class="gnb_2dul_box">'.PHP_EOL;
                        ?>
                            <li class="gnb_2dli"><a href="<?php echo $row2['me_link']; ?>" target="_<?php echo $row2['me_target']; ?>" class="gnb_2da"><?php echo $row2['me_name'] ?></a></li>
                        <?php
                        $k++;
                        }   //end foreach $row2
                        if($k > 0)
                            echo '</ul></div>'.PHP_EOL;
                        ?>
                    </li>
                <?php }  ?>
                <?php
                $i++;
                }   //end foreach $row
                if ($i == 0) {  ?>
                    <li class="gnb_empty">메뉴 준비 중입니다.<?php if ($is_admin) { ?> <a href="<?php echo G5_ADMIN_URL; ?>/menu_list.php">관리자모드 > 환경설정 > 메뉴설정</a>에서 설정하실 수 있습니다.<?php } ?></li>
                <?php } ?>
            </ul>


이렇게 수정해 보세요
<?php if($row['me_name'] == 'Menu' && $member['mb_level'] > 4) { ?> 이 조건에서만 보일 것입니다

foreach ($menu_datas as $row) {

  if (empty($row)) continue;

 

  // 특정 메뉴 레벨 제한 (메뉴명으로 체크)

  if ($row['me_name'] == 'Menu' && $member['mb_level'] < 5)

    continue;

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

회원로그인

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