document 모듈 작성
문서 생성 메서드는 documentController - ./modules/document/document.controller.php에 정의되어 있습니다. 예제는 다음과 같습니다.
$obj->title = "My sample document";
$obj->content = "Hello World!";
$obj->tags = "demo, hello";
$document_srl = getNextSequence();
$obj->document_srl = $document_srl;
$obj->module_srl = $this->module_srl;
$obj->allow_comment = 'Y';
$obj->allow_trackback = 'Y';
$oDocumentController = &getController('document');
$output = $oDocumentController->insertDocument($obj);
모든 문서는 [DB플래그]_documents 테이블에 저장됩니다. 기본 필드 외에도, extra_var 기능을 사용해서 필요한 커스텀 필드를 쉽게 추가할 수 있습니다. extra_vars는 모듈 인스턴스를 기준으로 생성됩니다. 따라서, 이 모듈 인스턴스에 포함된 모든 문서는 extra_vars로 정의된 필드를 사용할 수 있습니다.
커스텀 필드의 이름과 타입 정보는 [DB플래그]_document_extra_keys 테이블에 저장됩니다. documentController에 있는 insertDocumentExtraKey 메서드를 사용해서 새 키를 추가할 수 있습니다. 새 키의 값은 [DB플래그]_document_extra_vars 테이블에 저장됩니다. documentController 클래스의 insertDocumentExtraVar 메서드를 사용해서 새 키의 값을 추가할 수 있습니다.
사용되는 문서 속성은 다음과 같습니다.
|
속성 |
설명 |
|---|---|
|
document_srl |
문서의 고유한 ID |
|
module_srl |
문서가 연결되는 모듈 인스턴스 |
|
category_srl |
문서 카테고리의 ID. 문서 카테고리는 [DB플래그]_document_categories 테이블에 저장됩니다. |
|
lang_code |
문서의 언어 코드. 동일한 문서를 다른 언어로 된 여러 개의 버전으로 만들 때 사용됩니다. |
|
is_notice |
문서에 중요 표시를 할 때 사용되는 속성. 예를 들면 문서 목록의 맨 위에 공지를 표시할 때 이 속성을 사용할 수 있습니다. |
|
title |
문서 제목 |
|
content |
문서 내용 |
|
readed_count |
문서를 본 횟수 |
|
voted_count |
문서의 추천 횟수. 이 속성은 포인트 모듈과 통합해서 구현합니다. |
|
blamed_count |
문서의 신고 횟수 |
|
comment_count |
문서에 연결된 댓글 개수 |
|
trackback_count |
문서의 트랙백 개수 |
|
uploaded_count |
문서의 첨부 횟수 |
|
password |
비밀 문서에 사용. 비회원이 글을 쓸 때 비밀번호를 저장하고, 글을 수정하거나 삭제할 때 사용합니다. 비밀글은 글보기에서 사용됩니다. |
|
user_id, user_name, nick_name, member_srl |
문서 소유자에 관한 정보 |
|
tags |
문서 태그. 값을 쉼표(,)로 구분해서 저장함. |
|
regdate |
문서가 생성된 날짜 |
|
last_updated |
문서가 마지막으로 수정된 날짜 |
|
ipaddress |
문서를 생성한 사용자의 IP 주소 |
|
comment_status |
문서에 댓글 허용 여부(ALLOW: 허용, DENY: 제한) |
|
status |
문서의 상태 값(PRIVATE: 비공개, PUBLIC: 공개, SECRET: 비밀글, TEMP: 임시 저장) |
이 속성들은 모두 [DB플래그]_documents 테이블의 필드를 나타냅니다. 문서 항목의 모델 클래스는 document.item.php입니다.
문서는 다양한 방법으로 접근할 수 있습니다.
우선, 다음과 같은 구조로 불변 주소(permalink)를 표시합니다.
http://<xe_name>/<document_srl>
XE의 모든 문서는 다음과 같이 사용자 친화적인 이름으로 접근할 수도 있습니다.
http://<xe_name>/entry/<document_title>
문서 제목이 매우 길거나 공백을 포함하고 있으면 관리자 제어판의 정보관리 > 문서 에서 문서의 별칭을 정의할 수도 있습니다. 한 문서에 하나 이상의 별칭을 붙일 수 있습니다. 별칭으로 문서에 접근할 때 URL 구조는 다음과 같습니다.
http://<xe_name>/entry/<alias>
위와 같은 내장된 문서 접근 방법 외에도, 커스텀 모듈에서 자신만의 뷰 메서드를 정의할 수 있습니다.
|
|
참고 위의 예제들은 XE를 설치할 때 mod_rewrite가 가능하게 설정되어 있어야 사용할 수 있습니다. |
각 문서는 카테고리에 포함될 수 있습니다. 카테고리는 [DB플래그]_document_categories 테이블에 저장되며, 계층 구조로 만들 수 있습니다. 기본적으로는 비계층적입니다.
카테고리는 documentController와 documentModel 클래스를 사용해서 관리합니다. documentController 클래스는 카테고리 관리와 관련된 다음과 같은 메서드를 포함합니다.
- insertCategory
- deleteCategory
- moveCategoryUp
- moveCategoryDown
- procDocumentMoveCategory
- updateCategory
- updateCategoryCount
documentModel 클래스는 카테고리 관리와 관련된 다음과 같은 메서드를 포함합니다.
- getCategory
- getCategoryChildCount
- getCategoryDocumentCount
- getCategoryHTML
- getCategoryList
- getDocumentCategories
- getCategoryTplInfo
document 모듈은 문서의 개정 이력을 유지하는 메커니즘을 가지고 있습니다. 문서가 수정될 때마다 documentController 클래스의 updateDocument 메서드가 로그 엔트리를 자동으로 추가합니다.
개정 이력은 기본적으로 비활성화되어 있습니다. 개정 이력을 활성화하려면 문서 부분 설정 페이지에서 히스토리 사용 옵션을 선택해야 합니다.
개정 이력은 [DB플래그]_document_histories 테이블에 저장됩니다. documentModel 클래스에 있는 다음의 메서드를 사용해서 문서의 로그를 조회할 수 있습니다.
- getHistories
- getHistory
문서를 조회할 때 사용되는 메서드는 documentModel의 getDocumentList입니다. 이 메서드를 사용해서 다음과 같은 기준으로 문서를 필터링할 수 있습니다.
- 모듈 srl
- 카테고리
- 문서를 생성한 회원
- 제목
- 내용
- 태그
- 타입 – 공지, 비밀
- 조회 수, 추천 수 등
- 생성 날짜, 수정 날짜