============================================================ me_code 자동 감지 방법 - list_manage.php ============================================================ [문제] - 클라이언트 관리 리스트(list_manage.php)에서 "고객 리스트 보기" 버튼 클릭 시 me_code 파라미터가 URL에 붙지 않는 문제 [해결 방법] - 메뉴 테이블(g5_menu)에서 bo_table로 me_code를 자동 검색 [코드 위치] - 파일: /theme/hayan/mobile/skin/board/hayan_total/list_manage.php - 위치: 49~61 라인 (me_code 파라미터 처리 부분) [추가한 코드] ------------------------------------------------------------ // 여전히 me_code가 없으면 메뉴 테이블에서 bo_table로 검색 if ($me_code === '' && !empty($bo_table)) { // 메뉴 테이블에서 해당 게시판 링크를 가진 메뉴의 me_code 찾기 $menu_search_sql = "SELECT me_code FROM {$g5['menu_table']} WHERE me_link LIKE '%bo_table={$bo_table}%' OR me_link LIKE '%bo_table={$bo_table}&%' ORDER BY LENGTH(me_code) DESC LIMIT 1"; $menu_row = sql_fetch($menu_search_sql); if ($menu_row && !empty($menu_row['me_code'])) { $me_code = $menu_row['me_code']; } } ------------------------------------------------------------ [작동 원리] 1. 메뉴 테이블(g5_menu)의 me_link 컬럼에는 "/bbs/board.php?bo_table=WSA_2020" 형태로 링크가 저장됨 2. 해당 bo_table이 포함된 메뉴를 검색하여 me_code를 가져옴 3. ORDER BY LENGTH(me_code) DESC로 가장 구체적인(하위) 메뉴 우선 [me_code 감지 우선순위] 1순위: URL 파라미터에서 직접 전달된 me_code 2순위: HTTP_REFERER에서 추출 3순위: 메뉴 테이블(g5_menu)에서 bo_table로 검색 ← 새로 추가 4순위: form_config.json에서 저장된 값 읽기 [메뉴 관리 위치] - 관리자: /adm2/menu_home.php - 메뉴 테이블: {$g5['menu_table']} (보통 g5_menu) ============================================================ 메뉴 JSON 내보내기/업로드 기능 ============================================================ [파일 위치] 1. /adm2/menu_home.php - JSON 내보내기/업로드 UI 및 JavaScript 2. /adm2/menu_home_json_import.php - JSON 업로드 처리 PHP [menu_home.php에 추가한 코드 - UI 부분] ------------------------------------------------------------
메뉴 JSON 내보내기 / 업로드
※ 업로드 시 기존 메뉴가 대체됩니다
------------------------------------------------------------ [menu_home.php에 추가한 코드 - JavaScript 부분] ------------------------------------------------------------ ------------------------------------------------------------ [menu_home_json_import.php - 전체 코드] ------------------------------------------------------------ false, 'message' => '최고관리자만 접근 가능합니다.']); exit; } // POST 요청 체크 if ($_SERVER['REQUEST_METHOD'] !== 'POST') { echo json_encode(['success' => false, 'message' => 'POST 요청만 허용됩니다.']); exit; } // JSON 데이터 받기 $menu_json = isset($_POST['menu_json']) ? $_POST['menu_json'] : ''; if (empty($menu_json)) { echo json_encode(['success' => false, 'message' => '메뉴 데이터가 없습니다.']); exit; } $menus = json_decode($menu_json, true); if (!is_array($menus)) { echo json_encode(['success' => false, 'message' => 'JSON 파싱 오류']); exit; } try { sql_query("BEGIN"); sql_query("DELETE FROM {$g5['menu_table']}"); $inserted = 0; foreach ($menus as $menu) { $me_code = isset($menu['me_code']) ? sql_real_escape_string(trim($menu['me_code'])) : ''; $me_name = isset($menu['me_name']) ? sql_real_escape_string(trim($menu['me_name'])) : ''; $me_name_en = isset($menu['me_name_en']) ? sql_real_escape_string(trim($menu['me_name_en'])) : ''; $me_name_cn = isset($menu['me_name_cn']) ? sql_real_escape_string(trim($menu['me_name_cn'])) : ''; $me_name_jp = isset($menu['me_name_jp']) ? sql_real_escape_string(trim($menu['me_name_jp'])) : ''; $me_link = isset($menu['me_link']) ? sql_real_escape_string(trim($menu['me_link'])) : ''; $me_link_en = isset($menu['me_link_en']) ? sql_real_escape_string(trim($menu['me_link_en'])) : ''; $me_link_cn = isset($menu['me_link_cn']) ? sql_real_escape_string(trim($menu['me_link_cn'])) : ''; $me_link_jp = isset($menu['me_link_jp']) ? sql_real_escape_string(trim($menu['me_link_jp'])) : ''; $me_target = isset($menu['me_target']) ? sql_real_escape_string(trim($menu['me_target'])) : 'self'; $me_order = isset($menu['me_order']) ? intval($menu['me_order']) : 0; $me_use = isset($menu['me_use']) ? intval($menu['me_use']) : 1; $me_mobile_use = isset($menu['me_mobile_use']) ? intval($menu['me_mobile_use']) : 1; if (empty($me_code) || empty($me_name)) { continue; } $sql = "INSERT INTO {$g5['menu_table']} SET me_code = '{$me_code}', me_name = '{$me_name}', me_name_en = '{$me_name_en}', me_name_cn = '{$me_name_cn}', me_name_jp = '{$me_name_jp}', me_link = '{$me_link}', me_link_en = '{$me_link_en}', me_link_cn = '{$me_link_cn}', me_link_jp = '{$me_link_jp}', me_target = '{$me_target}', me_order = '{$me_order}', me_use = '{$me_use}', me_mobile_use = '{$me_mobile_use}'"; sql_query($sql); $inserted++; } sql_query("COMMIT"); echo json_encode(['success' => true, 'message' => "총 {$inserted}개 메뉴가 등록되었습니다."]); } catch (Exception $e) { sql_query("ROLLBACK"); echo json_encode(['success' => false, 'message' => '오류: ' . $e->getMessage()]); } ------------------------------------------------------------ [다른 사이트 적용 시 체크할 경로] 1. menu_home.php 위치: /adm2/menu_home.php (관리자 폴더) 2. menu_home_json_import.php 위치: /adm2/menu_home_json_import.php 3. _common.php 경로: require_once './_common.php' (동일 폴더) 4. 메뉴 테이블명: {$g5['menu_table']} - 그누보드 설정에 따라 자동 [주의사항] - JSON 업로드 시 기존 메뉴가 모두 삭제되고 새로 등록됨 - 최고관리자(super)만 접근 가능 - 다국어 메뉴(영문, 중문, 일문) 지원 ============================================================ 작성일: 2025-12-31 ============================================================