그누보드7의 홈페이지 상단의 메뉴 순서 변경이 가능한가요?

그누보드7의 홈페이지 상단의 메뉴 순서 변경이 가능한가요? 

인기 쇼핑 게시판1 게시판2

이런식으로 되어 있는데, 

게시판2 게시판1 인기 쇼핑

이런 식으로변경하고 싶어요 

|

답변 3개 / 댓글 1개

2026-10-08 (목) 23:56:24
안녕하세요.

메뉴 순서 변경은 가능합니다.

다만 현재 그누보드7의 기본 sirsoft-basic 템플릿에서는 관리자 화면에서 상단 메뉴 순서를 직접 변경하는 기능은 제공되지 않는 것으로 확인됩니다.

기본 메뉴는 홈 → 인기 → 쇼핑 → 게시판 목록 순서로 구성되어 있고, 게시판 목록은 생성 시점이 오래된 순서로 출력됩니다.

원하시는 '게시판2 → 게시판1 → 인기 → 쇼핑' 순서로 변경하려면 기본 템플릿의 헤더 구성을 수정해야 합니다.

다만 기본 템플릿을 직접 수정하면 업데이트 시 변경 사항이 사라질 수 있으므로, 별도의 사용자 템플릿으로 복사하여 수정하는 방법을 권장합니다.

참고로 관련 커스터마이징 예제를 공유해 주신 분이 있어 아래 링크도 참고하시면 좋겠습니다.
https://github.com/glitter-node/sirsoft-basic_menu_reverse
2026-10-06 (화) 19:51:03
설정 화면에서는 안 되고, 템플릿의 헤더 컴포넌트를 고쳐야 합니다. 현재 순서가 코드에 하드코딩되어 있기 때문입니다.
 
1) 데스크톱 상단 메뉴 순서
templates/_bundled/sirsoft-basic/src/components/composite/Header.tsx 의 Nav 블록이
[홈] -> [🔥 인기] -> [🛒 쇼핑] -> {게시판 목록} -> [더보기] 순으로 JSX 에 박혀 있습니다.
모바일은 같은 파일이 아니라 src/components/composite/MobileNav.tsx 가 별도로 같은 순서를 갖고 있습니다.
참고로 라벨은 nav.home / nav.popular / nav.shop / nav.more 번역키라서, 언어팩이나 번역만 바꿔서는 순서가 바뀌지 않습니다.
 
2) 관리자 레이아웃 편집기로는 왜 안 되나
layouts/_user_base.json 을 보면 헤더가 "name": "Header" composite 하나(desktop_header)로 들어가 있어서, 편집기에서는 헤더 전체가 한 덩어리로 취급됩니다. 그 안의 인기/쇼핑/게시판을 개별 선택해 순서를 바꿀 수 없습니다. (바꿀 수 있는 건 maxVisibleBoards: 5 같은 props 입니다.)
 
3) 게시판 목록의 순서는 어디서 오나
헤더의 boards prop 은 레이아웃의 data_sources 중 boards -> GET /api/modules/sirsoft-board/boards/board-menu 입니다.
이 API 는 sirsoft-board 의 BoardRepository::getActiveBoardsForMenu() 에서
Copy
Board::where('is_active', true)->select(['id','name','slug'])->orderBy('created_at', 'asc')->get();
로 고정 정렬해 내려주고, 그 결과를 board_menu 키로 캐시합니다(기본 TTL 24시간). boards 테이블에도 메뉴 순서용 컬럼이 없어서 관리자에서 순서를 지정할 방법이 없습니다.
 
수정 방법 (권장: sirsoft-basic 을 직접 고치지 말고 사용자 템플릿으로 복제)
번들 템플릿/모듈은 업데이트할 때 덮어써지기 때문입니다. 앞선 답변에 링크된 예제 템플릿도 같은 방식으로 헤더를 복제한 것입니다.
 
가. 데스크톱: Header.tsx 의 Nav 안에서 게시판 map 블록(그리고 원하면 더보기 블록)을 인기/쇼핑 버튼 앞으로 옮깁니다. 그러면 홈 -> 게시판 -> 인기 -> 쇼핑 순이 됩니다.
나. 모바일: MobileNav.tsx 의 Li 블록도 같은 순서로 옮깁니다. 모바일은 별도 컴포넌트라 여기를 안 고치면 모바일에서는 예전 순서로 보입니다.
다. 게시판 표시 순서(게시판2 -> 게시판1): API 가 준 순서를 그대로 쓰지 말고 템플릿에서 재정렬합니다.
Copy
// Header.tsx

const orderedBoards = [...boards].reverse(); // 생성 역순

const visibleBoards = orderedBoards.slice(0, maxVisibleBoards);

const hiddenBoards = orderedBoards.slice(maxVisibleBoards);
특정 순서로 고정하려면 슬러그 기준 정렬 맵을 쓰면 됩니다. 예: const ORDER = ['board2','board1','board3'];
이 방식은 sirsoft-board 모듈 PHP 를 건드리지 않아도 되고 board_menu 캐시와도 충돌하지 않습니다.
모듈 쿼리를 직접 asc -> desc 로 바꾸는 방법도 있지만 번들 모듈이라 업데이트 때 덮어써지고, 바꾼 뒤에는 board-menu 태그 캐시도 비워야 반영됩니다.
 
빌드/적용
Copy
cd templates/_bundled/{템플릿ID}

npm ci

php artisan template:build {템플릿ID}

php artisan template:install {템플릿ID}

php artisan template:activate {템플릿ID}
 
문서는 저장소의 docs/extension/template-workflow.md, docs/extension/template-commands.md 를 보시면 됩니다.
인기/쇼핑 위치는 그대로 두고 게시판 순서만 바꾸고 싶다면 가.나.는 건너뛰고 다.만 적용하셔도 됩니다.

가능합니다만 
현재 기본 sirsoft-basic 템플릿에는 상단 메뉴의 순서를 관리하는 별도의 설정 기능은 없습니다.
기본 헤더 요소에서 메뉴가 홈 -> 인기 -> 쇼핑 -> 게시판 목록 순서로 구성되어 있습니다. 
게시판 목록은 보드 메뉴 API에서 가져오며, 현재는 게시판 생성 시점이 오래된 것부터 반환됩니다.
따라서 게시판2 -> 게시판1 -> 인기 -> 쇼핑처럼 게시판과 인기/쇼핑 메뉴까지 포함해서 전체 순서를 변경하려면
헤더를 커스텀해야 합니다.
관리자 레이아웃 편집기에서도 헤더 자체를 하나로 다루기 때문에,
현재는 헤더 안의 개별 메뉴를 선택해서 순서를 변경할 수 없습니다.
계속 커스텀해서 사용하실 거라면
sirsoft-basic을 직접 수정하기보다는 별도의 사용자 템플릿을 만들어 헤더를 구현하는 방안이 적절합니다.
 

※ 사용 예제 :
sirsoft-basic 원본을 직접 수정하지 않고 별도의 '커스텀 사용자 템플릿'으로 분리하여,
상단 메뉴를 홈 -> 게시판 목록 -> 인기 -> 쇼핑 순서로 구성해 본 예제입니다.
게시판 목록을 게시판 생성 시점이 최신인 것부터 반환하도록 변경하는 sirsoft-board 수정 방법도 함께 정리되어 있습니다.
- 현재 sirsoft-board에는 보드메뉴 API의 반환 결과를 변환할 수 있는 훅이 없는 것으로 확인되어 아래 방안으로 소싱
- by-latest-posts.md : 생성 시점이 최신인 것부터 반환하는 소싱 방안 (아래의 '커스텀 사용자 템플릿'에 포함)
- '커스텀 사용자 템플릿'  :  https://github.com/glitter-node/sirsoft-basic_menu_reverse
- '데모 사이트'  :  https://sirsoft-basic-menu-reverse.glitter.kr

답변에 대한 댓글 1개

답변을 작성하려면 로그인이 필요합니다.