게시판·치환자
게시판 · 치환자
게시판은 메뉴에 연결하는 것만으로 목록·검색·페이징·상세 화면이 만들어집니다. 메인·헤더·서브레이아웃 블록 HTML에는 동적 치환자를 넣어 최신 게시글 목록이나 GNB·SNB 메뉴 트리를 실시간으로 노출합니다.
게시판 메뉴 연결
- 게시판 만들기
[게시판 관리]에서 게시판 이름과 게시판 키(예:
notice), 스킨(목록형 · 갤러리형 · 카드형), 카테고리 사용 여부를 설정합니다. - 메뉴에 연결
[메뉴관리]에서 게시판 유형 메뉴를 만들고 위 게시판을 선택합니다. 연결된 메뉴는
/bbsctt/list.do?key={게시판 키}로 열립니다. - 게시글 등록
[게시글 관리]에서 글을 등록합니다. 공지 고정, 카테고리, 파일 첨부를 지원하며 첨부 다운로드 횟수가 통계로 남습니다.
스킨별 화면 목록형은 번호·제목·작성자·등록일·조회수·첨부를 표로, 갤러리형·카드형은 썸네일 이미지 카드로 보여 줍니다. 스타일은 SUB_CSS의 .board_list, .img_list, .paging_wrap에서 수정합니다.
(1) 메인 화면 최신글 치환자
MAIN_BODY 같은 블록 HTML에 아래 치환자를 넣으면 서버가 해당 게시판의 최신글 HTML로 바꿔 출력합니다.
| 치환자 | 치환 결과 |
|---|---|
{{POSTS:게시판키:건수}} | 해당 게시판의 최신글 N건을 <li><a href>제목</a><span>날짜</span></li> 목록으로 출력 |
{{POSTS_MORE:게시판키}} | 해당 게시판 목록 페이지 URL (더보기 링크의 href에 사용) |
사용 예
<section class="notice">
<h2>공지사항</h2>
<a href="{{POSTS_MORE:notice}}">더보기</a>
<ul class="nd-news">{{POSTS:notice:5}}</ul>
</section>
주의 <ul>과 치환자 사이에 공백이나 줄바꿈을 넣지 마세요. 게시글이 없을 때 :empty 스타일로 “등록된 게시글이 없습니다” 같은 안내를 보여 줄 수 있습니다.
캐시 정책 및 동기화 (Cache Invalidation)
MenuService 및 BlockService는 고속 서빙을 위해 메모리 캐시(ConcurrentHashMap)를 유지합니다. 관리자 화면에서 수정할 때는 evict()가 호출되어 즉시 갱신되지만, DB에 SQL을 직접 INSERT/UPDATE한 경우에는 캐시가 비워지지 않으므로 관리자 콘솔에서 해당 항목을 다시 [저장]하거나 애플리케이션을 리로드해야 합니다.

