메타 데이타 저장
위키 페이지에서 저장되는 내용물들이 data라면 마지막 편집 시간, 편집자, 파일 크기 같은 정보들은 위키 페이지들의 metadata로 간주될 수 있습니다. 이 페이지는 이런 추가 정보들이 DokuWiki내에서 저장되는 방법과 위치를 설명합니다.
분산 저장
DokuWiki는 모든 metadata를 한 장소에 저장하지 않습니다.(예를 들면 데이타베이스나 레지스트리)
대신 changelog, 데이타 파일 속성(예를 들면 파일 크기, 마지막 수정 시간), meta
디렉토리에서 metadata를 찾아 볼 수 있습니다.
분산 저장의 장단점에 대한 논의는 토론 페이지를 참고합니다.
Metadata 처리기
meta
디렉토리 안의 정보는 초기에는 metadata renderer에 의해 쓰여집니다.
meta
디렉토리 안에서 $id.meta
로 이름 붙여진 각 페이지에 대해 1 대 1 대응되는 파일이 생성되며,
파일은 각 키들이 Dublin Core요소 이름을 가진 직렬화된 다차원 PHP배열입니다.
처리기(renderer)는 페이지가 저장될 때, indexer를 통해 페이지가 추가되었을 때, DokuWiki가 처리하는 것이 아닌 다른 방법(예: 스크립트)에 의해 시작됩니다.
메타 데이타 Get, Set 함수들
inc/parserutils.php
에는 메타 데이타를 다루는 2개의 함수가 있습니다:
''p_get_metadata($id)''
페이지의 다차원 배열을 넘겨줍니다.
인자 이름 | 설명 |
---|---|
$id | 위키 페이지 ID(필수) |
''p_set_metadata($id, $data, $render, $persistent)''
메타데이타의 정보를 설정합니다.
인자 이름 | 설명 |
---|---|
$id | 위키 페이지 ID(필수) |
$data | 메타 데이타에서 설정되어야 하는 배열(key ⇒ value 쌍) (필수) |
$render | boolean, 페이지 메타 데이타가 renderer을 이용해 생성되어야할지 여부(옵션,기본값=false) |
$persistent | boolean, 특별한 메타 데이타값이 다음 메타 데이타 renderer를 통해 유지되어야 할 지 여부(기본값=true) |
Data 구조
현재 아래 metadata는 core metadata renderer에 의해 저장됩니다:
- 'title' – 문자열, 첫번째 제목
- 'creator' – 문자열, 페이지 만든 사람의 실제 이름
- 'description' – 배열
- 'abstract' – 페이지의 raw 텍스트 abstract(250 ~ 500 문자)
- 'tableofcontents' – 배열, header id('hid') 목록, 제목 ('title'), 목록 항목 타잎 ('type')과 header레벨 ('level')
- 'contributor' 배열, 사용자 ID목록 ⇒ 페이지 작성에 공헌한 사용자들 실제 이름
- 'date' – 배열
- 'created' – timestamp, 생성 시간
- 'modified'– timestamp, 가장 최근 수정 시간(부분 수정 옵션이 아닌 경우만)
- 'relation' – 배열
- 'isreferencedby' – 배열, 이 페이지에 링크된 페이지들 목록: ID ⇒ boolean(존재 여부)
- 'references' – 배열, 링크하는 페이지들 목록: ID ⇒ boolean(존재 여부)
추가적으로, 플러그인들은 더 많은 metadata요소들을 지원할 수 있습니다. 계획:
- 'subject' – 배열, 태그 목록(blog plugin)
- 'relation' – 배열
외부적으로 사용될 수 있는 메타 데이타의 키들은 Dublin Core element set에 정의된 이름을 사용해야 합니다.
Metadata Persistence
내부적으로 DokuWiki는 metadata를 위해 2개의 배열(current
과 persistent
)을 유지합니다.
persistent
은 참조 과정중에 지워지지 않는 key/values쌍의 복사본을 저장하기 위한 배열입니다.
p_get_metadata()
를 사용하는 metadata에 대한 모든 요구들은 current
배열을 사용하는 것는 것입니다.
persistenet 메타 데이타 키들의 예:
- 'creator'
- 'contributor'
Metadata와 플러그인
위에서 설명한 metadata get/set 함수 외에, 플러그인이 metadata와 상호작용할 수 있는 2가지 다른 메카니즘이 제공됩니다.
문법 플러그인은 $format==“metadata”
이 처리하는 render()
함수를 사용하여 current페이지에 대한 metadata를 생성할 수 있습니다. method by handling the .
Metadata key/value쌍은 renderer->meta
배열에 추가되고 persistent값들 역시 renderer->persistent
배열에 추가됩니다.
Action Plugins은 metadta 처리 전/후에 metadata를 들여다 보거나 수정하기 위한 PARSER_METADATA_RENDER를 위해 등록이 가능합니다.
번역
english version: dokuwiki-2006-11-06.
Add your email here if you created translated or modified whole or part of this page.
- jk Lee - real mail domain is gmail, not zoo.com for spam filtering 2007-2-7 created