Manual:Extensions/ko

확장 기능(extension)은 MediaWiki 핵심(Core) 기능을 강화하거나 새로운 기능을 추가하는 PHP코드의 모음입니다. 확장기능은 MediaWiki의 운영자들와 사용자들의 요구사항을 충족시켜주는 미디어위키의 가장 중요한 기능 중 하나입니다.

필요에 따라 다음과 같이 확장 기능을 사용할 수 있지 말입니다:


 * 기사를 쓰기 위해서변수,파서 함수, 라고커스텀 XML 태그를 통해 wiki 마크 업을 확장하는 - 예는Category:Parser function extensions와Category:Parser extensions를 봐 주세요.
 * 특별 페이지를 통해 새로운 리포트-팅과 운영상의 기능을 추가하는 - 예는Category:Special page extensions를 봐 주세요.
 * 스킨과 여러가지 유저 인터페이스 확장 기능 경유로 MediaWiki의 룩 앤드 필을 변경하는 - 예는Gallery of user styles와Category:User interface extensions를 봐 주세요.
 * 커스텀 인증 메카니즘을 사용해 시큐러티를 강화하는 - 예는 Category:Authentication and Authorization Extensions를 봐 주세요.

이미 만들어진 확장기능을 모두 보기 위해서Category:Extensions by category나 Extension Matrix를 보면 됩니다. 이 확장 기능의 설치 방법을 보고 싶거나 당신만의 것을 만들어 보고 싶으면 아래의 글을 더 읽어보세요.

설치되어 있는 확장기능 확인하기
관리자 권한을 가진 몇몇만이 미디어위키 서버의 파일시스템에 확장기능을 설치할 수 있다. 근데 Special:Version에 접속하면 아무나 이 미디어위키에 어떤 확장기능이 설치되었고 사용이 가능한지를 알 수 있다. these extensions <-요건 영어 위키에 활성화된 확장기능 리스트다.

확장 기능을 인스톨 한다
MediaWiki는인스톨이 완료되면 확장기능을 설치할 수 있게 됩니다. 확장 기능을 추가하기 위해서 이하의 순서를 따릅니다.:


 * 1) 시작하기 전에
 * 몇몇 확장 기능은 패치를 해야 설치 할 수 있습니다. 대부분은 unix 커멘드 명령어와 설치 순서까지 지원을 합니다(따라만 하면 됩니다). 설치과정을 따라하기 위해서는 (SSH)접속 권한이 필요하기도 합니다.
 * 1)  를 다운로드해 인스톨 합니다.
 * 이 파일은 대부분의 확장 기능에 필요하지 않습니다. 확장기능을 설치하다가 에러가 날 때만 설치하세요(라고 돼 있는데 저는 안까니까 안서 깔았습니다)
 * 확장기능... 중에 특히 새로나온 녀석들은 라는 헬퍼(helper)파일을 요하는 경우가 있습니다. ExtensionFunctions는 일종의 함수 헤더로 확장기능이 MediaWiki의 코어 코드에 없는 기능을 모듈화 할 수 있게 만듭니다. 이 파일을 인스톨하는 가장 쉬운 방법은 SVN으로부터 현재의 버젼을 다운로드하는일입니다. 이 파일은 언제라도여기에서 볼 수 있습니다. 일단 다운로드하면, 파일을 MediaWiki의 하위 디렉토리인  에 카피합니다.
 * 1) 원하는 확장기능 다운로드 받기.
 * 확장 기능은 통상 모듈 패키지로 배포됩니다. 그것들은 일반적으로 에 독립된 디렉토리로 들어갑니다. MediaWiki.org상에 있는 확장 기능의 리스트는extension matrix에 있고, Wikimedia의SVN 리포지터리(repository)에 보존된 확장 기능의 리스트는svn:trunk/extensions에서 확인할 수 있습니다.
 * 1) 내 확장 기능 인스톨 하기.
 * 일반적으로, 파일의 마지막에, (PHP의 코드의 마지막의 단락 문자," "의 위에), 다음 행을 추가합니다:
 * 이 행은 PHP interpreter에 확장 기능을 읽도록 시킵니다. 그 결과 확장기능이 MediaWiki에 액세스 가능하게 합니다.
 * 이 인스톨의 수속은 대체로의 확장 기능을 위해서는 충분합니다만, 확장 기능안에는 다른 인스톨 수속을 요구하는 것이 있습니다.상세한 것에 대하여는 확장 기능의 문서를 확인해 주세요.
 * 확장 기능의 선언을 LocalSettings.php 파일의 범위내의 장소에서 설정할 수 있는 한편으로, 의 행의 전에 확장 기능의 선언을 결코 설치하고는 되지 않습니다.그처럼 하면 확장 기능 셋업 함수의 배열이 비워, 확장 기능이 인스톨 되지 않은 상태가 되어, 그것을 수정할 때까지 wiki에 액세스 할 수 없게 될지도 모릅니다!
 * 확장 기능의 선언을 LocalSettings.php 파일의 범위내의 장소에서 설정할 수 있는 한편으로, 의 행의 전에 확장 기능의 선언을 결코 설치하고는 되지 않습니다.그처럼 하면 확장 기능 셋업 함수의 배열이 비워, 확장 기능이 인스톨 되지 않은 상태가 되어, 그것을 수정할 때까지 wiki에 액세스 할 수 없게 될지도 모릅니다!

확장 기능을 쓴다
개념으로서는, 각각의 확장 기능은 3개의 부분으로부터 구성됩니다:


 * 셋업
 * 실행
 * 국제화

국제 조직의 확장 기능
국제 조직의 확장 기능은 경시 변화 해 왔습니다.초기의 확장 기능은 심플한 단독의 파일로, 이름은 확장 기능에 의해서 이름이 붙여져 지금도 이러한 확장 기능의 예를 찾아낼 수 있습니다.MediaWiki가 성숙할 뿐으로 이러한 조직은 경시되어 왔습니다.대신에, 각각의 확장 기능은 3개의 부분에 대응한 하나 혹은 2개의 파일을 포함한 하나의 디렉토리에 설치됩니다:셋업, 실행과 국제화입니다.


 * myextension/myextension.php - 셋업의 설명서를 보존합니다.(주의: 확장 기능안에는 이 파일을 라고 이름 붙이는 것이 있습니다)


 * myextension/myextension.body.php - 심플한 확장 기능을 위한 실행 코드를 보존합니다.복잡한 확장 기능은 복수의 php 파일을 요구하는 일이 있어, 실장 코드는 서브 디렉토리, 에 설치되는 일이 있습니다.예에 대해서는Semantic MediaWiki를 봐 주세요


 * myextension/myextension.i18n.php - 확장 기능을 위해서 국제화 정보를 보존합니다.

셋업의 설명을 쓴다
셋업의 부분을 쓰는 목표는 셋업을 강화하는 것으로, 유저가LocalSettings.php파일에 셋업 파일을 포함한 작업 이외가 필요없게 하는 것입니다.예는 다음과 같습니다:

유저가 설정 할 수 있도록 하는 경우, 설정 파라미터를 정의해 문서화할 필요가 있어, 유저는 다음과 같이 셋업 하지 않으면 안됩니다(XXX를myextension로 옮겨놓습니다):

간단하게 하기 위해서 셋업 파일은 몇개의 태스크를 완수하지 않으면 안됩니다:


 * 확장 기능으로 정의한 컨피귤레이션 변수를 정의 한편/혹은 검증합니다
 * 오토 로드하기 위해서 확장 기능에 의해서 사용되는 클래스를 준비합니다
 * 즉석에서 되어야 할 셋업 부분과 MediaWiki 코어가 초기화해 설정할 때까지 연기될 필요가 있는 것을 결정합니다
 * 확장 기능을 사용해특별 페이지,커스텀의 XML 태그,파서 함수, 라고변수를 등록합니다
 * 확장 기능에 의해서 필요하게 되는 추가의훅을 정의합니다
 * 확장 기능을 위해서 국제화와 지방 분권(현지화)을 셋업 합니다

유저가 확장 기능을 설정할 수 있도록 한다
유저가 확장 기능을 설정 할 수 있도록 하고 싶은 경우, 컨피귤레이션 변수를 하나 이상 제공할 필요가 있습니다.이러한 변수의 이름을 독특한 것으로 하는 것은 좋은 아이디어입니다.그것들은 MediaWiki의 명명 규약에도 따라야 합니다(예를 들면, 글로벌 변수는$wg로 시작됩니다).

예를 들면, "Very silly extension that does nothing"(아무것도 하지 않으면이라고도 바보스러운 확장 기능)라고 명명하면, 모든 컨피귤레이션 변수를 혹은 로 명명하고 싶을지도 모릅니다.MediaWiki 코어가 이 방법으로 변수를 시작하지 않는 이상 무엇을 선택하는지는 사실은 문제가 아니고, 이 방법으로 변수를 시작하는 공개된 확장 기능이 없는 것을 체크하는 것은 지당한 일입니다.당신의 확장 기능과 다른 확장 기능동안에 변수명의 중복이 있는 것을 유저는 선의에 받지 않습니다.

컨피귤레이션 변수의 문서를 인스톨 노트에 써 두는 것도 좋은 아이디어입니다.

오토 로드를 위해서 클래스를 준비한다
확장 기능을 실행하는 클래스를 사용하는 경우, MediaWiki는 클래스가 어디에 있는지를 찾아내는 간이화 된 메카니즘을 제공합니다.이 메카니즘 덕분에, 많은 경우 를 쓸 필요가 없습니다.

MediaWiki의 오토 로드 메카니즘을 사용하기 위해서는, 엔트리를$wgAutoloadClasses변수에 추가합니다.각각의 엔트리의 키는 클래스명입니다; 값은 클래스의 정의를 보존하는 파일입니다.심플한 하나의 클래스의 확장 기능을 위해서, autoloading 섹션이 다음과 같은 내용을 찾을 수 있도록(듯이) 클래스는 확장 기능과 같은 이름이 주어집니다(확장 기능의 이름은 Foobar입니다):

.

복수의 클래스를 가지는 복잡한 확장 기능을 위해서, autoloading 섹션은 다음과 같이 찾습니다:

MediaWiki로 기능을 등록한다
예를 들면, MediaWiki는 인스톨 한 모든 확장 기능을 페이지로 리스트 표시합니다.확장 기능이 이 페이지에도 리스트 표시되고 있는 것을 확인하는 것은 좋은 습관입니다.이것을 하기 위해서, 확장 기능으로 사용되는특별 페이지,커스텀의 XML 태그,파서 함수, 라고변수의 각각의 위해(때문에) 엔트리를$wgExtensionCredits에 추가합니다.엔트리는 다음과 같은 것입니다:

Manual:$wgExtensionCredit로 설명되고 있도록(듯이),validextensionclass는specialpage, parserhook, variable, other의 하나가 아니면 안됩니다.

상기의 등록에 가세하고, 기능을 MediaWiki에"훅(hook)"하지 않으면 안됩니다.상기의 작업은 Special:Version 페이지를 셋업 했을 뿐입니다.상세한 것에 대하여는 각각의 타입의 확장 기능의 문서를 봐 주세요:


 * Manual:Special pages/ko
 * Manual:Variables/ko
 * Manual:Parser functions/ko
 * Manual:Tag extensions/ko

셋업을 연기한다
MediaWiki의 셋업 프로세스에 대해LocalSettings.php는 초기의 단계에서 동작을 합니다만, 이 시점에서는 많은 일이 충분히 설정되어 있지 않습니다.이것이 어떤 종류의 셋업 활동을 위한 문제가 될 가능성이 있습니다.이 문제를 해결하기 위해서, MediaWiki에서는 셋업 액션의 동작 타이밍을 선택할 수 있도록 하고 있습니다.그것들을 곧바로 동작시키고 싶은 경우, 셋업 파일에 커멘드를 쓸까 다음에 코어의 소프트웨어의 설정이 종료한 후에 동작시킬 수 있습니다.

셋업 액션을 지연 하기 위해서, 셋업 파일은 이하의 2개의 내용을 포함하지 않으면 안됩니다:
 * 셋업 함수의 정의
 * 함수를$wgExtensionFunctions배열에 할당하는 것

PHP 코드는 이하와 같은 것이 됩니다:

실행 부분을 쓴다
실장 부분을 쓰기 위한 기술은 확장 기능의 목적 나름입니다:


 * wiki 마크 업: wiki 마크 업을 확장하는 확장 기능은 대체로커스텀 XML 태그,파서 함수와변수를 정의해 실행하는 코드를 포함합니다.확장 기능으로 이러한 기능을 어떻게 실장하는지에 임해서 상세한 내용은 전의 문장의 링크 앞으로 볼 수 있습니다.
 * 리포트-팅과 아드미니스트레이션:확장 기능에 리포트 및 관리 기능을 추가하는 것은 통상특별 페이지를 추가하는 것에 의해서 됩니다.더 상세한 정보를 추가하기 위해서,Manual:Special pages/ko를 봐 주세요.
 * 기사의 자동화와 통합: MediaWiki와 배경의 데이타베이스 혹은 통합 기능을 위한 기사의 체크간의 통합을 개선하는 확장 기능은 대부분의 경우 기사의 작성, 편집, rename와 삭제의 프로세스에 영향을 주는 많은 훅의 하나에 기능을 추가합니다.훅과 그것들에 코드를 추가하는 방법에 대해 더 상세한 정보는,Manual:Hooks/ko를 봐 주세요.
 * 룩 앤드 필:새로운 룩 앤드 필을 MediaWiki에 제공하는 확장 기능은스킨에 탑재됩니다.독자적인 스킨을 쓰기 위한 상세한 정보에 대해서는,Manual:Skins/ko과Manual:Skinning/ko를 봐 주세요.
 * 시큐러티:어떤 종류의 유저를 제한하는 확장 기능은 MediaWiki 독자적인 퍼미션 시스템과 통합해야 합니다.시스템에 대해 더 배우기 위해서는,Manual:Preventing access/ko를 봐 주세요.확장 기능안에는 MediaWiki에 외부의 인증 메카니즘을 이용시키는 것도 있습니다.상세한 정보에 대해서는,AuthPlugin/ko를 봐 주세요.더하고, 확장 기능이 어떤 종류의 기사의 독자수를 제한하려고 하는 경우,Security_issues_with_authorization_extensions/ko를 체크해 주세요.

Extensions FAQ/ko,Developer hub/ko도 봐 주세요.

확장 기능을 국제화 한다
다언어의 독자를 가지는 wiki상에서 확장 기능을 사용하고 싶은 경우, 국제화 서포트를 확장 기능에 추가할 필요가 있습니다.다행히도 이 작업은 비교적 간단합니다.

 유저에게 표시하는 텍스트를 위해서, 메세지를 정의합니다.MediaWiki는 파라미터화한 메세지와 실행시에 생성되는 정보로 메세지가 의존할 때에 사용되는 기능을 서포트합니다.각각의 메세지를 소문자의 메세지 id에 할당합니다. 셋업과 코드의 실장에 대하고, 각각의 리터럴의 사용을 에의 콜로 옮겨놓습니다. 메세지 정의를 국제화 파일(myextension.i18n.php)에 보존합니다.이것은 통상, 언어와 메세지 id를 각각의 문자열에 자리 매김을 하는 배열을 셋업 하는 것으로 행해집니다 각각의 메세지 id는 소문자입니다.최소의 파일은 다음과 같이 됩니다:

 셋업에 순서에 대하고, 각각의 메세지를 등록합니다.이것은 통상은($allMessages를 정의하기 위해서) 지방 분권 파일의 인클루드에 의해서 됩니다.각각의 메세지를 통한 looping와 를 거기에 추가합니다:  

더 상세한 정보에 대해서는, 아래와 같이를 참조해 주세요:
 * Internationalisation/ko - MediaWiki 국제화 엔진을 검토합니다. 특히 로컬라이즈 할 수 있는 기능의 리스트와 지방 분권에 관련한 MediaWiki 원시 코드의 클래스의 리뷰가 있습니다.
 * Localization checks - 로컬라이즈 한 메세지의 공통의 문제를 검토합니다.

확장 기능의 테크닉
확장 기능은 효과를 획득하기 위해서 사용되는프로그래밍 테크닉에 근거해 분류할 수 있습니다. 많은 확장 기능은 이러한 테크닉을 1개이상 사용합니다:

태그 식과 같게, 파서 함수는 인수와 처리해 돌아가 값을 돌려줍니다, 태그 식과는 달라, 파서 함수의 결과는wikitext입니다.
 * 서브 클래스로 하는: MediaWiki는 어떤 종류의 확장 기능에 대해서 베이스 클래스에 의해서 제공된 MediaWiki의 서브 클래스로서 실장되는 것을 기대합니다:
 * 특별 페이지 - SpecialPage클래스의 서브 클래스는 현재의 시스템 상태, 유저 입력의 파라미터와 데이타베이스 쿠에리의 편성에 의해서 페이지의 내용을 다이나믹에 구축하기 위해서 사용됩니다.리포트와 데이터 엔트리 폼의 양쪽 모두가 생성됩니다.리포트와 아드미니스트레이션의 양쪽 모두를 위해서 사용됩니다.
 * 스킨 - 스킨은SkinTemplate클래스의 서브 클래스에 의한 출력 페이지를 변경에 의해서 MediaWiki의 MediaWiki의 룩 앤드 필을 변경합니다.
 * 훅: MediaWiki의 처리의 범위내의 키포인트로 커스텀의 PHP 코드를 추가하기 위한 테크닉입니다.그것들은 MediaWiki의 파서, 지방 분권 엔진, 확장 기능 매니지먼트 시스템과 페이지 점검 시스템에 의해서 넓게 사용됩니다.
 * 태그 확장 기능 관련 - XML스타일 태그는 HTML 코드를 출력하는 php 함수로 관련 지을 수 있고 있습니다.태그 내부에서 텍스트를 포맷 하기 위해서 당신 자신을 제한할 필요는 없습니다.표시하는 필요함 없습니다.많은 태그 확장 기능은 텍스트를 매입의 google 오브젝트, 데이터 엔트리 폼, RSS 피드, 선택된 wiki 기사로부터의 발췌등을 묻는HTML의 생성을 이끄는 파라미터로서로서 사용합니다.
 * 매직 워드: wiki 텍스트의 문자열을 함수로 관련을 가지는 단독의 id에 매핑하기 위한 기술입니다.변수와파서 기능의 양쪽 모두 이 기술을 사용합니다.id에 자리 매김을 해 된 모든 텍스트는 함수의 돌아가 값으로 옮겨놓을 수 있습니다.문자열과 id간의 매핑은LanguageGetMagic훅에 부속된 각각의 함수에게 건네진 배열에 보존됩니다.id의 해석은 어느 정도 복잡한 프로세스입니다 - 상세한 정보에 대해서는매직 워드를 봐 주세요.
 * 변수 - 변수안에는 오칭이 있는 것이 조금 있습니다.템플릿과 같은 wiki 텍스트이지만, 파라미터를 가지지 않고, 결정해 쳐 된 값을 할당할 수 있습니다. 혹은 라고 하는 표준적인 wiki 마크 업은 변수의 예입니다.그것들은 값의 소스로부터 이름을 취득하는: PHP 변수 혹은 변수에 할당할 수 있을 가능성이 있는 것입니다.예로서 문자열, 수, 식, 혹은 함수의 돌아가 값입니다.
 * 파서 함수 - 입니다.
 * Manual:Akox/ko확장 기능으로AkoX를 사용할 수 있습니다. 이것에 의해서 페이지를 리로드 하는 일 없이 서바사이드의 확장 기능 코드와 당신의 kovaScript 코드를 인타라크트 시킬 수 있습니다.

관련 항목

 * Extension Matrix
 * Category:Extensions/ko
 * Template:Extension/ko
 * Manual:Parser functions/ko
 * Manual:Special pages/ko
 * Manual:Tag extensions/ko
 * Project:Extension requests
 * m:Category:MediaWiki extensions - MediaWiki.org.에 이행중입니다

[[Category:Customization techniqu