LogoLogo
NHN커머스 메인고도몰 운영 도움말
  • 고도몰 튜닝 가이드
    • Intro
    • 이해하기
      • 용어
      • 구조
        • 튜닝 진행 방법
        • 튜닝 가능 범위
        • 고도몰 아키텍쳐(Architecture)
        • 코딩 규칙
        • 네이밍 규칙
    • 준비하기
      • 심화 구조 이해
        • Routing 소개
        • Controller 소개
        • HTTP 소개
        • Database 소개
        • Security 소개
        • Exception 소개
        • Language 소개
      • 오픈 API 사용가이드
        • 인증키 발급 방법 안내
        • 공급사 이용 방법 안내
    • 튜닝하기
      • 소스 코드 튜닝
        • 기본 튜닝 방법
        • 컨트롤러 튜닝 방법
        • 템플릿 튜닝 방법
        • 튜닝 시 유의사항
      • 데이터베이스 튜닝
        • 튜닝 방법
        • 튜닝 시 유의사항
        • 고도몰 테이블 명세서
        • PhpMyAdmin 이용
      • 디버깅 방법
      • 패치 확인 및 대응 방법
    • 튜닝 따라하기
      • 관리자 GNB 색상 변경하기
      • 즐겨찾기 메뉴 바로가기 만들기
      • 관리자 메뉴 추가하기
      • 관리자 메뉴 수정하기
      • 관리자 페이지 추가하기
      • 관리자 페이지 수정하기
      • 사용자 페이지 추가하기
      • 사용자 페이지 수정하기
    • 잘못된 튜닝사례
      • 상속 미준수
      • 메소드 관련
      • 그 외
  • 기타 개발 가이드
    • 로그 사용 가이드
    • [PMA] 내보내기(export) 이용 안내
    • 외부 스크립트 사용 가이드
    • SDK 사용 가이드
    • [DB] 사용 가이드
  • 튜닝가이드 영상 보기
Powered by GitBook
LogoLogo

NHN COMMERCE

  • 공지사항
  • 회사소개

Partners

  • 서비스 제휴문의
  • 셀러어드민
  • 디자인 파트너

Developers

  • 스토어

©NHN COMMERCE Corp. All rights reserved.

On this page
  • 📌 요구사항 및 분석
  • 📝 개선안 정리
  • 🛠️ 튜닝 진행
  • 📌 관리자 1차 메뉴 추가
  • 📌 관리자 2차 메뉴 추가
  • 📌 관리자 3차 메뉴 추가
  • 📌 관리자 메뉴별 권한 설정
  • 🔖 결과 확인
  • 📌 관리자 1차 메뉴 추가
  • 📌 관리자 2, 3차 메뉴 추가

Was this helpful?

  1. 고도몰 튜닝 가이드
  2. 튜닝 따라하기

관리자 메뉴 추가하기

Previous즐겨찾기 메뉴 바로가기 만들기Next관리자 메뉴 수정하기

Last updated 1 month ago

Was this helpful?

📌 요구사항 및 분석

  • 관리자에 상점에서 별도로 사용하고자 하는 메뉴를 추가하고자 함.

  • 해당 메뉴들은 고도몰에서 제공하지 않는 메뉴로, 상점에서 상점 관리에 필요한 별도의 기능을 구현하기 위한 메뉴를 추가하는 것임.

📝 개선안 정리

  • 관리자 메뉴에 다음과 같은 메뉴 추가

    • 1차 메뉴 : 환경저장

    • 2차 메뉴 : 기본설정 > 메뉴 정책

    • 3차 메뉴 : 기본설정 > 메뉴 정책 > 메뉴 관리

🛠️ 튜닝 진행

관리자 메뉴는 es_adminMenu 테이블에서 관리합니다.

📌 관리자 1차 메뉴 추가

adminMenuSort(관리자 메뉴 순서), adminMenuNo(관리자 메뉴 고유 번호) 값을 확인합니다.

adminMenuSort, adminMenuNo는 각각 고유한 값을 가져야 합니다.

아래 SELECT 쿼리를 실행하여 마지막 관리자 메뉴 순서 값을 확인합니다.

SELECT max(adminMenuSort) 
FROM `es_adminMenu` 
WHERE adminMenuDepth = 1 
    AND adminMenuType = 'd'; # d = 본사 메뉴, s = 공급사 메뉴
# 실행 결과 (예시)
100

다음으로 아래 SELECT 쿼리를 실행하여 마지막 관리자 메뉴 고유 번호를 확인합니다.

SELECT adminMenuNo 
FROM `es_adminMenu` 
WHERE adminMenuNo LIKE 'prefix%' 
ORDER BY adminMenuNo DESC 
LIMIT 0, 1;
# 실행 결과 (예시)
prefix00119

항상 메뉴고유번호는 제작사 prefix(접두사)를 입력해야 합니다. (회사영문 또는 고유영문) 제작사 prefix(접두사) 에 godo 는 사용하지 않습니다.(godo 를 사용하시면 오류가 발생할 수 있습니다.)

추가되는 메뉴고유번호에 godo prefix를 사용하는 경우 고도몰 배포 시, 초기화되거나 변경될 수 있습니다. 실행 결과값이 없을 경우 추가되는 메뉴고유번호는 prefix00001 입니다. (숫자는 00001부터 시작하여 1씩 증가해야 합니다.)

아래 INSERT 쿼리를 실행하여 필요한 관리자 1차 메뉴를 추가합니다.

INSERT INTO `es_adminMenu` (adminMenuNo, adminMenuType, adminMenuProductCode, adminMenuPlusCode,
                            adminMenuCode, adminMenuDepth, adminMenuParentNo, adminMenuSort, adminMenuName,
                            adminMenuUrl, adminMenuDisplayType, adminMenuDisplayNo, adminMenuSettingType,
                            adminMenuEcKind, regDt)
VALUES ('prefix00120', 'd', 'godomall', null,
        'setting', '1', 'setting', '101', '환경저장',
        'setting.php', 'y', 'godo00000, 'd', 'p', now());

관리자페이지에서 변경된 1차 메뉴를 확인합니다.

📌 관리자 2차 메뉴 추가

아래 SELECT 쿼리를 실행하여 추가하고자 하는 2차 메뉴의 1차 메뉴 고유번호를 확인합니다.

SELECT adminMenuNo 
FROM `es_adminMenu` 
WHERE adminMenuDepth = 1 
    AND adminMenuType = 'd' 
    AND adminMenuName = '기본설정';
# 실행 결과 (예시)
godo00001

1차 메뉴인 (기본설정)의 메뉴에서 2차 메뉴의 최대 정렬 번호를 확인합니다.

SELECT max(adminMenuSort) 
FROM `es_adminMenu` 
WHERE adminMenuDepth = 2 
    AND adminMenuType = 'd' 
    AND adminMenuParentNo = 'godo00001';
# 실행 결과 (예시)
100

다음으로 아래 SELECT 쿼리를 실행하여 마지막 관리자 메뉴 고유 번호를 확인합니다.

SELECT adminMenuNo 
FROM `es_adminMenu` 
WHERE adminMenuNo LIKE 'prefix%' 
ORDER BY adminMenuNo DESC 
LIMIT 0, 1;
prefix00120

항상 메뉴고유번호는 제작사 prefix(접두사)를 입력해야 합니다. (회사영문 또는 고유영문) 제작사 prefix(접두사) 에 godo 는 사용하지 않습니다. (godo 를 사용하시면 오류가 발생할 수 있습니다.)

추가되는 메뉴고유번호에 godo prefix를 사용하는 경우 고도몰 배포 시, 초기화되거나 변경될 수 있습니다.

실행 결과값이 없을 경우 추가되는 메뉴고유번호는 prefix00001 입니다. (숫자는 00001부터 시작하여 1씩 증가해야 합니다.)

아래 INSERT 쿼리를 실행하여 필요한 관리자 2차 메뉴를 추가합니다.

INSERT INTO `es_adminMenu` (adminMenuNo, adminMenuType, adminMenuProductCode, adminMenuPlusCode,
                            adminMenuCode, adminMenuDepth, adminMenuParentNo, adminMenuSort, adminMenuName,
                            adminMenuUrl, adminMenuDisplayType, adminMenuDisplayNo, adminMenuSettingType,
                            adminMenuEcKind, regDt)
VALUES ('prefix00121', 'd', 'godomall', null,
        'menu', '2', 'godo00001', '101', '메뉴 정책',
        null, 'y', 'godo00000', 'd', 'p', now());

2차 메뉴는 1개 이상의 3차 메뉴가 등록되어야 노출됩니다.

📌 관리자 3차 메뉴 추가

아래 SELECT 쿼리를 실행하여 추가하고자 하는 3차 메뉴의 2차 메뉴 고유번호를 확인합니다.

  • 위 본사 관리자의 (메뉴 관리)이라는 3차 메뉴를 추가하려면 DataBase > es_adminMenu 접속하신 다음 아래 Query 를 실행합니다.

  • 2차 메뉴인 (메뉴 정책)의 메뉴 고유번호를 확인합니다.

SELECT adminMenuNo 
FROM `es_adminMenu` 
WHERE adminMenuDepth = 2 
    AND adminMenuType = 'd' 
    AND adminMenuName = '메뉴 정책';
# 실행 결과 (예시)
prefix00121

2차 메뉴인 (메뉴 정책)의 메뉴에서 3차 메뉴의 최대 정렬 번호를 확인합니다.

SELECT max(adminMenuSort) 
FROM `es_adminMenu` 
WHERE adminMenuDepth = 3 
    AND adminMenuType = 'd' 
    AND adminMenuParentNo = 'prefix00121';
# 실행 결과 (예시)
1000

다음으로 아래 SELECT 쿼리를 실행하여 마지막 관리자 메뉴 고유 번호를 확인합니다.

SELECT adminMenuNo 
FROM `es_adminMenu` 
WHERE adminMenuNo LIKE 'prefix%' 
ORDER BY adminMenuNo DESC 
LIMIT 0, 1;
# 실행 결과 (예시)
prefix00121

항상 메뉴고유번호는 제작사 prefix(접두사)를 입력해야 합니다. (회사영문 또는 고유영문) 제작사 prefix(접두사) 에 godo 는 사용하지 않습니다. (godo 를 사용하시면 오류가 발생할 수 있습니다.)

추가되는 메뉴고유번호에 godo prefix를 사용하는 경우 고도몰 배포 시, 초기화되거나 변경될 수 있습니다.

실행 결과값이 없을 경우 추가되는 메뉴고유번호는 prefix00001 입니다. (숫자는 00001부터 시작하여 1씩 증가해야 합니다.)

아래 INSERT 쿼리를 실행하여 필요한 관리자 3차 메뉴를 추가합니다.

INSERT INTO `es_adminMenu` (adminMenuNo, adminMenuType, adminMenuProductCode, adminMenuPlusCode,
                            adminMenuCode, adminMenuDepth, adminMenuParentNo, adminMenuSort, adminMenuName,
                            adminMenuUrl, adminMenuDisplayType, adminMenuDisplayNo, adminMenuSettingType,
                            adminMenuEcKind, regDt)
VALUES ('prefix00122', 'd', 'godomall', null,
        'menu_management', '3', 'prefix00121', '1001', '메뉴 관리',
        'menu_management.php', 'y', null, 'd', 'p', now());

관리자 페이지 > 기본 설정 메뉴에서 추가된 2, 3차 메뉴를 확인합니다.

📌 관리자 메뉴별 권한 설정

  • 권한 설정은 '권한없음 / 읽기 / 읽기+쓰기' 의 3가지 조건으로 제공됩니다.

    • 권한없음 : 메뉴의 내용 확인 허용 안함

    • 읽기 : 메뉴의 내용 확인은 허용하나 정보 변경은 허용 안함

    • 읽기+쓰기 : 메뉴의 내용 확인 및 정보 변경까지 제한 없이 모두 허용함

  • 쓰기 제한 추가 예시

    • 관리자 메뉴 페이지에 해당되는 컨트롤러에서 post() 함수를 통해 쓰기 제한 스크립트를 정의합니다.

<?php
class UserPageController extends \Controller\Admin\Controller
{

    public function post()
    {
        // 관리자 메뉴 쓰기 권한에 따른 쓰기 기능 제한
        $writable = $this->getAdminMenuWritableAuth();
        if ($writable['check'] === false) {
            $returnMenuAccessAuth = [];
            $returnMenuAccessAuth[] = '$("#frmBase").validate().destroy();';
            $returnMenuAccessAuth[] = '$("#frmBase").submit(function(){ dialog_alert("__PAGE_TITLE__의 쓰기 권한이 없습니다. 권한은 대표운영자에게 문의하시기 바랍니다."); return false; });';
            $returnMenuAccessAuth = array_map(function($script) use ($writable) {return str_replace("__PAGE_TITLE__", $writable['title'], $script);}, $returnMenuAccessAuth);
            $this->setData('menuAccessAuth', implode("\n", $returnMenuAccessAuth));
        }
    }
}

🔖 결과 확인

📌 관리자 1차 메뉴 추가

📌 관리자 2, 3차 메뉴 추가

초기 1차 메뉴
관리자 페이지 > 기본설정 > 관리 정책 > 운영자 권한 설정
변경 후 1차 메뉴