get_menu_db 메뉴 함수에 도메인 자동으로 추가하기 정보
get_menu_db 메뉴 함수에 도메인 자동으로 추가하기
관련링크
본문
안녕하세요. 비버팩토리 입니다.
작업도중에 메뉴 함수쪽에는 도메인이 빠져있어서 자동으로 추가되게 수정했습니다.
관리자 페이지 보면 메뉴 관리가 있습니다.
예를들어서 /bbs/content.php?co_id=company 이런식으로
도메인을 깜빡하고 입력 안한채로 저장 했을경우
자동으로 잡히게 수정했습니다.
훅 (hook)으로 만들었기 때문에 extend 확장해서 사용하셔도 되고 따로 라이브러리 보관하셔도 됩니다.
코드 만족 하신다면 추천부탁드립니다.
유지보수 문의 주세요
카카오톡문의
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
3
댓글 1개

감사합니다.