get_menu_db 메뉴 함수에 도메인 자동으로 추가하기 > 그누보드5 팁자료실

그누보드5 팁자료실

get_menu_db 메뉴 함수에 도메인 자동으로 추가하기 정보

get_menu_db 메뉴 함수에 도메인 자동으로 추가하기

본문

안녕하세요. 비버팩토리 입니다.

작업도중에 메뉴 함수쪽에는 도메인이 빠져있어서 자동으로 추가되게 수정했습니다.

관리자 페이지 보면 메뉴 관리가 있습니다.

예를들어서 /bbs/content.php?co_id=company 이런식으로

도메인을 깜빡하고 입력 안한채로 저장 했을경우 

자동으로 잡히게 수정했습니다. 

훅 (hook)으로 만들었기 때문에 extend 확장해서 사용하셔도 되고 따로 라이브러리 보관하셔도 됩니다.

코드 만족 하신다면 추천부탁드립니다.

 

유지보수 문의 주세요

https://kmong.com/gig/546111

 

카카오톡문의

https://open.kakao.com/o/sHmfqQde

 

텔레그램

@beaverfactory 

 



add_replace('get_menu_db', function ($use_mobile) {
    global $g5;

    // 1) 훅 인자가 배열로 올 수 있음 → 첫 요소만 사용
    if (is_array($use_mobile)) {
        $use_mobile = $use_mobile[0] ?? 0;
    }

    // 2) bool/문자 정규화
    $use_mobile = (int)!!$use_mobile; // 0 or 1

    // 3) 캐시
    static $cache = [];
    $key = $use_mobile;
    if (isset($cache[$key])) {
        return $cache[$key];
    }

    $where = $use_mobile ? "me_mobile_use = '1'" : "me_use = '1'";

    $sql = "SELECT *
            FROM {$g5['menu_table']}
            WHERE $where
              AND LENGTH(me_code) = 2
            ORDER BY me_order, me_id";
    $result = sql_query($sql);

    $cache[$key] = [];

    // 공통 베이스 URL
    $base_url = (defined('G5_URL') && G5_URL) ? G5_URL : G5_HTTPS_DOMAIN;

    for ($i = 0; $row = sql_fetch_array($result); $i++) {

        $row['ori_me_link'] = $row['me_link'];

        // 도메인이 없을 경우만 베이스 URL 추가
        if (!preg_match('#^https?://#i', $row['me_link'])) {
            $row['me_link'] = rtrim($base_url, '/') . '/' . ltrim($row['me_link'], '/');
        }

        $row['me_link'] = short_url_clean($row['me_link']);
        $row['sub'] = [];

        // 서브메뉴 조회
        $sql2 = "SELECT *
                 FROM {$g5['menu_table']}
                 WHERE $where
                   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++) {

            $row2['ori_me_link'] = $row2['me_link'];

            // 도메인이 없을 경우만 베이스 URL 추가
            if (!preg_match('#^https?://#i', $row2['me_link'])) {
                $row2['me_link'] = rtrim($base_url, '/') . '/' . ltrim($row2['me_link'], '/');
            }

            $row2['me_link'] = short_url_clean($row2['me_link']);
            $row['sub'][$k] = $row2;
        }

        $cache[$key][$i] = $row;
    }

    return $cache[$key];
}, G5_HOOK_DEFAULT_PRIORITY, 1);


 
추천
3

댓글 1개

전체 2,724 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

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