공통 레이아웃 구조
GNB / LNB / SNB 레이아웃 작업 절차
헤더(GNB)와 서브페이지 네비게이션(LNB·SNB)을 구성할 때 ND CMS는 방식 B(관리자 프리셋 즉시 선택)와 방식 A(커스텀 HTML 블록 + 동적 치환자 퍼블리싱) 두 가지 방식을 모두 지원합니다.
(1) 방식 B — GNB & 서브(LNB/SNB) 프리셋 선택 (권장 · 코딩 불필요)
관리자 콘솔 [레이아웃/블록 관리] (/_ndm/layout) 상단 카드에서 사이트별로 원하는 GNB 유형과 서브 네비게이션 유형을 선택하고 [네비게이션 프리셋 저장]을 누르면 즉시 반영됩니다.
| 영역 | 프리셋 코드 | 표시 방식 및 특징 |
|---|---|---|
| 상단 헤더 (GNB) | MEGA (기본) |
전체 메가메뉴형 — 1차 메뉴 마우스 오버 시 전체 폭 하단 패널이 열리며 모든 2·3차 메뉴를 한눈에 표시합니다. |
DROPDOWN |
개별 드롭다운형 — 마우스를 올린 1차 메뉴 바로 아래에만 컴팩트한 2·3차 드롭다운 박스가 열립니다. | |
SIMPLE |
상단 1차 심플형 — 상단 바에는 1차 메뉴만 깔끔하게 노출하고, 하위 메뉴는 우측 전체메뉴 버튼이나 서브 SNB에서 탐색합니다. | |
| 서브 네비게이션 | LNB (기본) |
상단 브레드크럼 바형 (1단 풀폭) — 서브비주얼 하단에 경로 드롭다운 바(LNB)를 배치하고 본문을 와이드 풀폭으로 사용합니다. |
SNB |
좌측 사이드바 메뉴형 (2단) — 좌측에 현재 1차 메뉴 산하의 2·3차 아코디언 사이드바(aside.snb_side)를 두고 우측에 본문을 배치합니다. |
|
BOTH |
상단 브레드크럼 + 좌측 SNB 혼합형 — 상단 경로 드롭다운 바와 좌측 2단 사이드바 메뉴를 동시에 표시하는 공공·기업 표준 레이아웃입니다. |
(2) 방식 A — HEADER & SUB_LAYOUT 커스텀 블록 퍼블리싱 (자유도 100%)
프리셋 구조를 넘어 사이트 고유 디자인 시안의 HTML 마크업을 100% 그대로 적용해야 할 때는 [레이아웃/블록 관리]에서 HEADER 블록과 SUB_LAYOUT 블록을 편집합니다.
- 프리셋 기본 템플릿 불러오기
HEADER또는SUB_LAYOUT편집 화면 우측 상단에서 원하는 프리셋(MEGA/DROPDOWN/SIMPLE또는LNB/SNB/BOTH)을 선택하고 [템플릿 불러오기]를 클릭하면 표준 HTML 골격과 치환자가 에디터에 자동 삽입됩니다. - 동적 메뉴 치환자 배치
하드코딩된 메뉴 링크 대신
{{GNB_MENU}},{{BREADCRUMB}},{{SNB_MENU}}등의 치환자를 원하는 위치에 배치하면 관리자 [메뉴관리] 트리와 실시간 연동됩니다. - 실시간 미리보기 및 프리셋 복귀
편집 화면 하단에서 실제 메뉴 트리가 결합된 렌더링 결과를 즉시 확인합니다. 다시 방식 B(프리셋 모드)로 돌아가려면 블록 내용을 모두 비우고 저장하면 됩니다.
(3) SUB_LAYOUT 커스텀 블록 작성 예시 (좌측 SNB + 우측 본문)
SUB_LAYOUT 블록은 {{SUB_BODY}} 치환자를 기준으로 상단 래퍼와 하단 래퍼가 자동 분리되어 모든 콘텐츠(content.jsp)와 게시판(board_list.jsp, board_view.jsp) 본문을 감쌉니다.
<!-- SUB_LAYOUT 블록 커스텀 마크업 예시 -->
<div class="sub_head">
<div class="sub_vis {{VIS_CLASS}}">
<h3>{{VIS_TOP}}</h3>
<h2>{{VIS_TITLE}}</h2>
</div>
<nav class="sub_nav"><div class="s_inner">
{{BREADCRUMB}}
{{SHARE_BAR}}
</div></nav>
</div>
<div class="sub_layout_wrap sub_layout--both">
<aside class="snb_side">
<div class="snb_title"><span>{{SNB_TITLE}}</span></div>
{{SNB_MENU}}
</aside>
<div class="sub_body_area">
{{SUB_BODY}}
</div>
</div>
퍼블리셔 필수 수칙 & 10종 블록 관리
ND CMS는 퍼블리셔가 웹 브라우저 관리자 콘솔에서 직접 레이아웃 마크업과 스타일시트, 스크립트를 편집할 수 있도록 동적 에셋 서빙 메커니즘을 제공합니다.
동적 에셋 서빙 우선순위 원리 브라우저가 /resource/www/css/common.css, sub.css, main.css, common.js를 요청하면 SiteController.dynamicCommonAsset()가 동작하여 DB 테이블(tb_block)에 저장된 사이트별 편집본을 최우선 반환합니다.
전체 10종 레이아웃 블록 코드 및 역할
| 블록 코드 | 역할 및 설명 | 구분 |
|---|---|---|
HEADER | 상단 헤더 (GNB 영역) 커스텀 HTML — 비어있으면 사이트별 GNB 프리셋(MEGA/DROPDOWN/SIMPLE) 자동 사용 | 네비게이션 |
SUB_LAYOUT | 서브 비주얼 · LNB · 좌측 SNB 커스텀 HTML — 비어있으면 서브 프리셋(LNB/SNB/BOTH) 자동 사용 | 네비게이션 |
MAIN_BODY | 메인 페이지 본문 HTML — 메인 비주얼 배너, 최신글 치환자({{POSTS:...}}), 주요 섹션 마크업 | 필수 블록 |
FOOTER | 공통 하단 푸터 HTML — 하단 로고, 기관/기업 주소, 저작권 문구 | 필수 블록 |
COMMON_CSS | 공통 레이아웃 CSS (/resource/www/css/common.css) — 헤더, 푸터, 공통 그리드 스타일 | 필수 블록 |
SUB_CSS | 서브 페이지 공통 CSS (/resource/www/css/sub.css) — 서브비주얼, LNB/SNB, 게시판·콘텐츠 컴포넌트 | 필수 블록 |
MAIN_CSS | 메인 페이지 전용 CSS (/resource/www/css/main.css) — 메인 비주얼 및 메인 섹션 스타일 | 필수 블록 |
COMMON_JS | 공통 JavaScript (/resource/www/js/common.js) — GNB/LNB 인터랙션, 탭 전환, 팝업 스크립트 | 필수 블록 |
HEAD_EXTRA | <head> 추가 태그 — 외부 웹폰트, 추가 메타태그, 외부 CSS/JS CDN 링크 | 선택 블록 |
BODY_END | </body> 직전 추가 스크립트 — 채널톡, 애널리틱스 등 외부 트래킹 스크립트 | 선택 블록 |

