작은숲:위키노트/미디어위키 이름공간 추가
미디어위키에서 사용자 지정 이름공간을 추가할 때는 다른 설정할 때처럼 LocalSettings.php 파일에 필요한 설정을 추가한다.
// Define constants for my additional namespaces.
define("NS_DEV", 3000); // This MUST be even.
define("NS_DEV_TALK", 3001); // This MUST be the following odd integer.
가장 먼저 할 일은 이름공간의 번호를 설정하는 것이다. 미디어위키에서 이름공간은 저마다 이름을 가지고 있지만 소프트웨어 내부에서는 숫자로 표현된다. 그래서 각각의 이름공간의 번호는 중복되면 안 된다. 이 숫자들은 사용자들이 알 필요는 없지만 위키 사이트 운영자나 개발자는 알아두는 것이 좋다. 미디어위키에서 문서 이름공간의 번호는 반드시 짝수이어야 한다. 지정할 수 있는 최대값은 32767이다. 100~199까지는 이미 예약된 이름공간의 번호이니 피하도록 하고 확장 기능 중에서 이름공간을 사용하는 것들이 있을지 모르니 미리 확인한다. 보통 3,000번대 이후의 값이 적당하다. 여기에서는 3000번을 NS_DEV 이름공간에 할당했다. 이름공간을 새로 추가할 때는 문서의 이름공간 뿐 아니라 토론 문서의 이름공간도 설정해야 한다. 그것이 NS_DEV_TALK 값이다. 토론 문서의 이름공간은 반드시 홀수이어야 하고, 문서 이름공간에 1을 더한 값으로 한다. 여기에서는 3001으로 할당했다. PHP에서는 이런 상수를 선언할 때 보통 대문자로 쓴다. 그리고 단어 사이는 밑줄문자('_')로 구분한다. 반드시 그렇게 해야 하는 것은 아니지만 미디어위키에서는 이런 코딩 규칙을 따르고 있으니 가급적 따르는 것이 좋다.
// Add namespaces.
$wgExtraNamespaces[NS_DEV] = "개발";
$wgExtraNamespaces[NS_DEV_TALK] = "개발토론"; // Note underscores in the namespace name.
다음에는 $wgExtraNamespaces 변수에 추가한 이름공간의 이름을 지정한다. 만약 공백이 들어가야 한다면 공백 대신 밑줄문자('_')를 사용한다. 위와 같이 설정하면 '개발' 이름공간에 들어가는 문서들의 제목에는 모두 '개발:'이라는 접두어가 들어갈 것이다. 토론 문서의 이름공간은 문서 이름공간의 이름 뒤에 '토론'을 붙인다. 반드시 그렇게 해야 하는 것은 아니지만 한국어 위키에서는 대부분 그렇게 하고 있다.
$wgNamespaceProtection[NS_DEV] = array( 'editdev', 'readdev' ); // permission "editdev" required to edit the dev namespace
$wgGroupPermissions['*']['editdev'] = false;
$wgGroupPermissions['*']['readdev'] = false;
$wgGroupPermissions['sysop']['editdev'] = true;
$wgGroupPermissions['sysop']['readdev'] = true;
그 다음에 나오는 설정들은 권한에 대한 것이다. 추가한 이름공간에 있는 문서들을 보거나 편집할 수 있는 권한을 제한하기 위해서는 위와 같이 설정한다. 만약 이런 제한을 할 필요 없다면 이 설정은 하지 않아도 된다. 권한의 기본값은 모든 사용자가 읽고 쓸 수 있는 것이다.
먼저 $wgNamespaceProtection 변수에 사용할 권한 이름을 지정한다. 편집 권한은 앞에 'edit'를 붙이고, 읽기 권한은 앞에 'read'를 붙인다. 뒤에 따라오는 'dev'는 고유한 값이면 어떤 값이든 상관 없다. 보통 이름공간 상수에서 사용했던 이름을 소문자로 쓴다.
$wgGroupPermissions['*']['editdev'] 변수는 모든 사용자의 '개발' 이름공간에 대한 편집 권한을 말한다. 여기서 'editdev'는 앞에서 설정한 편집 권한의 이름이다. 따라서 $wgGroupPermissions['*']['editdev'] = false; 문장은 '개발' 이름공간에 대해 모든 사용자들이 편집할 수 없도록 설정하는 것이다. 비슷하게 읽기 권한도 모든 사용자가 읽을 수 없도록 설정했다. 그리고 'sysop' 그룹에 대해 읽고 편집할 수 있도록 $wgGroupPermissions['sysop']['editdev'] = true; 문장과 같이 설정했다.
// subpages enabled for the dev namespace
$wgNamespacesWithSubpages[NS_DEV] = true;
$wgContentNamespaces[] = NS_DEV;
$wgNamespacesWithSubpages 변수는 새롭게 추가한 이름공간에 하위 문서를 허용할 것인지 설정하는 것이다. 하위 문서란 '미디어위키/설정'처럼 다른 문서의 제목에 슬래시('/')를 붙여서 문서 제목을 만든 것을 말한다. 이 변수를 설정하면 '미디어위키/설정' 문서는 '미디어위키' 문서의 하위 문서가 된다. 하위 문서의 경우에는 제목 아래에 상위 문서로 가는 링크가 자동으로 붙는다. $wgContentNamespaces 변수는 문서가 담긴 이름공간들을 저장하는 배열이다. 이 변수에 이름공간을 추가하면 '특수' 이름공간처럼 문서가 아닌 다른 기능을 수행하는 이름공간이 아니라 '일반' 이름공간처럼 문서를 담고 있는 이름공간으로 취급한다. 그래서 본문 수를 셀 때 이 이름공간에 있는 문서들도 포함하게 된다. 지금까지 설정한 내용을 모두 적어보면 아래와 같다.
// custom namespaces
// Define constants for my additional namespaces.
define("NS_DEV", 3000); // This MUST be even.
define("NS_DEV_TALK", 3001); // This MUST be the following odd integer.
// Add namespaces.
$wgExtraNamespaces[NS_DEV] = "개발";
$wgExtraNamespaces[NS_DEV_TALK] = "개발토론"; // Note underscores in the namespace name.
$wgNamespaceProtection[NS_DEV] = array( 'editdev', 'readdev' );
$wgGroupPermissions['*']['editdev'] = false;
$wgGroupPermissions['*']['readdev'] = false;
$wgGroupPermissions['sysop']['editdev'] = true;
$wgGroupPermissions['sysop']['readdev'] = true;
// subpages enabled for the dev namespace
$wgNamespacesWithSubpages[NS_DEV] = true;
$wgContentNamespaces[] = NS_DEV;
참고
| 설치와 설정 | |
|---|---|
| 기능과 활용 | |
| 관리와 개발 | |