1. 모델 (mangboard/models)
  – 게시판의 설계를 담당하는 역할을 하며, 한개의 게시판은 반드시 한개의 모델과 연결됩니다
   (모델 파일이 설정되어 있지 않은 게시판은 "mangboard/skins/스킨이름/includes/skin-model.php" 파일로 설정됩니다)
  – 모델에 작성된 순서대로 한줄의 코드가 한개의 템플릿과 매칭되어 게시판 태그를 생성합니다
  – 데스크탑, 태블릿, 모바일 등 다양한 디바이스에 따라 각각의 모델을 정의하여 보다 쉽게 반응형 웹을 구축할 수 있습니다

2. 템플릿 (mangboard/templates)
  – 템플릿에는 게시판을 구성하는 다양한 기능들이 구현되어 있는 곳으로 필요시에 따라 꺼내서 사용할 수 있습니다
  – 템플릿 폴더는 폴더 내부의 모든 파일을 자동으로 읽도록 설정되어 있어서 템플릿 파일 복사만으로
    쉽게 템플릿을 추가할 수 있습니다
  – HTML5 같은 새로운 기술이 나오면 기존의 게시판 구조의 수정없이 템플릿 추가만으로 새로운 기술을 적용할 수 있습니다

3. 스킨 (mangboard/skins)
  – 기본 스킨은 기본적으로 일반 게시판, 갤러리, 캘린더 3가지 형태를 지원하며, 다양한 형태로 수정해서 사용할 수 있습니다
  – 스킨폴더에 새로운 스킨을 업로드 하면 자동으로 등록이 되고, 관리자>게시판 설정>스킨이름 리스트에 추가됩니다
  – 망보드 버젼업시 호환성 문제를 줄이기 위해 스킨은 최소한의 역할(레이아웃, 디자인)만을 담당합니다

4. 플러그인 (mangboard/plugins)
  – 게시판을 구성하는 중요한 기능들은 각각의 플러그인으로 분리되어 있고, 사용자가 직접 플러그인을 개발하여
   추가할 수 있습니다
  – 플러그인 폴더에 복사된 플러그인들은 "폴더/폴더.php" 방식으로 플러그인 폴더 이름과
   동일한 PHP 파일이 폴더 내에 존재해야 플러그인으로 등록됩니다

5. 위젯(mangboard/plugins/widgets)
  – 위젯은 특정 기능을 가볍게 구현한 형태로 한개의 페이지에서 개수에 상관없이 중복사용이 가능합니다.
  – 위젯 폴더에 복사된 위젯들은 "폴더/폴더.php" 방식으로 위젯 폴더 이름과
   동일한 PHP 파일이 폴더 내에 존재해야 위젯으로 등록됩니다

6. API (mangboard/api)
  – 게시판의 버튼 이벤트는 거의 대부분 API 폴더 내부에 있는 API 파일들과 통신을 하여 동작합니다
  – 모바일앱 개발시 API 폴더에 있는 API 파일들을 이용하시면 별도의 API 를 추가로 개발하지 않아도 됩니다

7. 코어 (mangboard/includes)
  – 게시판의 핵심 파일들이 들어 있는 폴더로 이 폴더 내부의 파일들에 대한 수정은 권장하지 않습니다
  – 워드프레스에서 제공하는 필터와 액션 기능들을 통해 코어 파일들을 수정하지 않아도 게시판 기능들을 수정할 수 있는
    방법들을 제공합니다

8. 필드 매니저 (mangboard/includes/mb-fields.php)
  – 필드 매니저는 테이블 필드의 목록과 이름을 관리하는 역할을 하며 필드 매니저에 정의가 되어 있는 테이블 필드에 한해서만
    모델에서 사용("field":"fn_title")이 가능합니다
  – 모델을 통해 만들어진 글쓰기 폼에서 전송된 내용들을 디비 테이블에 들어갈 수 있는 데이터 또는 INSERT 쿼리로 전환하는데
   사용됩니다
    기존의 다른 게시판에서는 글작성시 새로운 항목을 추가하기 위해 form 태그와 디비 연결부분 2군데를 수정해야 했다면,
   망보드에서는 모델에서 새로운 항목을 추가하기만 하면 됩니다
   (게시판, 댓글, 회원관리 필드 매니저에는 기본적으로 5개의 확장 필드 ext1~ext5가 추가되어 있습니다)
  – 모델을 통해 게시판 각각의 필드 매니저를 설정할 수 있어 망보드 이외의 게시판을 망보드 내부로 불러오거나 디비에
   존재하는 다른 테이블을 연결해서 게시판 형태로 관리할 수 있습니다
1. 망보드에서 제공하는 회원 관리 기능은 2가지 방식으로 사용할 수 있습니다
  1) 워드프레스("WP-USER")
    – 워드프레스 회원 관리 시스템의 기능을 그대로 망보드 회원 관리 기능에 적용해서 사용합니다
    – "MB-BASIC" 버젼은 "WP-USER" 기능만 사용 가능합니다
  2) 망보드("MB-USER")
    – 워드프레스에서 많은 회원을 보다 쉽고 빠르게 관리하기 위해 제공하는 기능입니다
    – 워드프레스에서 제공하는 회원가입 페이지에서 가입한 회원은 2가지 방식 모두 로그인이
      가능하지만, 망보드에서 제공하는 회원가입 페이지에서 가입한 회원은 망보드에서 제공하는 로그인 페이지를 통해서만
      로그인이 가능합니다
    – "MB-USER" 기능은 비즈니스 패키지를 설치해야 사용이 가능합니다

2. 회원 관리 기능에 대한 설정은 "관리자>Mangboard>옵션설정" 회원 모드에서 "WP-USER", "MB-USER" 선택해서 사용하실 수 있습니다

3. 망보드는 비즈니스 패키지를 통해 "로그인, 회원가입, 회원정보, 비밀번호 수정, 비밀번호 찾기"와 같은 회원 관리 기능을 Shortcode 형태로 제공합니다

4. 회원 관리 시스템은 WP-USER=>MB-USER로 전환은 가능하지만 MB-USER=>WP-USER 으로 전환하게 되면 일부 사용자 로그인 기능이 오동작하는 문제가 발생할 수 있어, 초기에 신중하게 선택하시기 바랍니다

※ 회원 관리 시스템을 2개로 분리한 이유
 비즈니스 패키지에서 회원 버젼을 2개로 분리할 수 있도록 한 이유는 워드프레스가 회원마다 20~50개의 데이터를 생성하기 때문에 회원이 10만명이 되면 회원 한명 방문시 최소 200만개의 데이터에서 20~50개의 회원 데이터를 찾아야 하는 문제가 발생하기 때문입니다. 200만개의 데이터에서 20개의 회원 데이터를 찾는 시스템과 10만개의 데이터에서 1개의 회원 데이터를 찾는 시스템의 차이라고 생각하시면 됩니다. 일반적으로 디비 데이터가 50만개가 되기 전까지는 일반 사용자가 속도를 크게 느끼지 못하지만, 50만개를 넘어가면 속도가 조금씩 느려지는게 느껴지는데, 여기에 방문자가 증가하면 느려지는 속도는 뚜렷하게 나타납니다. 망보드 회원 관리 시스템은 이러한 워드프레스의 단점을 보완하기 위해 2가지 방식을 제공합니다
(WP-Members 플러그인을 사용하면 회원이 늘어날 수록 홈페이지가 쉽게 느려지는 현상을 보완해 주는 기능입니다)
망보드WP는 새로운 기술을 보다 쉽게 적용하면서 확장성을 높이기 위해
"모델-템플릿-스킨" 형태의 구조를 사용하여 개발이 진행 되었습니다
모델을 통해 게시판을 보다 쉽게 수정 및 관리할 수 있으면서 다양한 디바이스 환경에 대응할 수 있고,
템플릿을 작은 컴포넌트 형태로 세분화해서 확장성을 높이면서 새로운 기술을 쉽게 추가할 수 있도록 하였습니다
스킨의 역할은 "디자인" 영역으로 최소화해서 게시판 버젼업시 발생하는 호환성 문제를 줄일 수 있도록 하였습니다

 
1. 모델 

 – 모델은 게시판의 설계를 담당하는 역할을 하며 JSON 구조로 구성되어 있습니다

 – 게시판 기본 모델(skin-model) 파일은 mangboard/skins/스킨이름/includes/skin-model.php 입니다

 – 아래의 코드는 글작성시에 작성자 이름에 대한 설정을 정의한 모델 코드 샘플입니다

   {"field":"fn_user_name","name":"작성자","type":"text","width":"150px","maxlength":"20","required":"(*)"},


2. 템플릿

 – 모델에서 정의한 타입에 맞는 템플릿 코드를 찾아 HTML 태그로 전환해 주는 역할을 합니다 ("type":"text")

 – 템플릿 폴더 (mangboard/templates)를 보시면 mtpl 로 시작하는 모델 템플릿tpl 로 시작하는 일반 템플릿 파일을
   보실 수 있습니다
 – 게시판을 담당하는 "tpl.board.php", 관리자를 담당하는 "mtpl.admin.php", INPUT 태그를 담당하는 "mtpl.input.php" 파일
   3개가 핵심 템플릿 파일입니다

 [ Text 를 생성하는 템플릿 코드]
if($type=='text'){
    $template_start = '<input type="text" name="user_name"   
}else if($type=='textarea'){



}

 
3. 스킨
 – 템플릿에서 넘겨 받은 HTML 태그에 CSS를 적용하여 사용자에게 보여주는 역할을 합니다

 [ 템플릿에서 넘겨 받은 HTML 코드 ]
<tr id="mb_board1_tr_user_name">
    <th scope="row"><label for="mb_board1_i_user_name">작성자(*)</label></th>
    <td><input class="user_name" style="width:150px;" name="user_name" type="text"></td>
</tr>

 [ HTML 코드에 CSS 가 적용된 화면 ]