<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://devcafe.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4_%ED%99%95%EC%9E%A5_extention_%ED%99%9C%EC%9A%A9%EA%B0%80%EC%9D%B4%EB%93%9C</id>
	<title>미디어위키 확장 extention 활용가이드 - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://devcafe.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4_%ED%99%95%EC%9E%A5_extention_%ED%99%9C%EC%9A%A9%EA%B0%80%EC%9D%B4%EB%93%9C"/>
	<link rel="alternate" type="text/html" href="https://devcafe.co.kr/w/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4_%ED%99%95%EC%9E%A5_extention_%ED%99%9C%EC%9A%A9%EA%B0%80%EC%9D%B4%EB%93%9C&amp;action=history"/>
	<updated>2026-04-06T04:10:49Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://devcafe.co.kr/w/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4_%ED%99%95%EC%9E%A5_extention_%ED%99%9C%EC%9A%A9%EA%B0%80%EC%9D%B4%EB%93%9C&amp;diff=1352&amp;oldid=prev</id>
		<title>2025년 5월 19일 (월) 21:36에 Devcafe님의 편집</title>
		<link rel="alternate" type="text/html" href="https://devcafe.co.kr/w/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4_%ED%99%95%EC%9E%A5_extention_%ED%99%9C%EC%9A%A9%EA%B0%80%EC%9D%B4%EB%93%9C&amp;diff=1352&amp;oldid=prev"/>
		<updated>2025-05-19T21:36:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ko&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 이전 판&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2025년 5월 20일 (화) 06:36 판&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l359&quot;&gt;359번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;359번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# 그 다음에 아무 페이지에서나 wiki 마크업에 포함될 수 있는 두 개의 사용자 정의 XML 태그 작성.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# 그 다음에 아무 페이지에서나 wiki 마크업에 포함될 수 있는 두 개의 사용자 정의 XML 태그 작성.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[category:미디어위키]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Devcafe</name></author>
	</entry>
	<entry>
		<id>https://devcafe.co.kr/w/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4_%ED%99%95%EC%9E%A5_extention_%ED%99%9C%EC%9A%A9%EA%B0%80%EC%9D%B4%EB%93%9C&amp;diff=576&amp;oldid=prev</id>
		<title>Devcafe: /* 룩앤드필 사용자 정의하기 */</title>
		<link rel="alternate" type="text/html" href="https://devcafe.co.kr/w/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4_%ED%99%95%EC%9E%A5_extention_%ED%99%9C%EC%9A%A9%EA%B0%80%EC%9D%B4%EB%93%9C&amp;diff=576&amp;oldid=prev"/>
		<updated>2024-10-20T16:05:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;룩앤드필 사용자 정의하기&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ko&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 이전 판&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2024년 10월 21일 (월) 01:05 판&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l46&quot;&gt;46번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;46번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#: https://dataonair.or.kr/publishing/img/knowledge/20101117_44_2.jpg&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#: https://dataonair.or.kr/publishing/img/knowledge/20101117_44_2.jpg&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;룩앤드필 사용자 정의하기 &lt;/del&gt;====&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;스킨(테마) 설치 &lt;/ins&gt;====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# MediaWiki는 스킨의 사용을 통해 wiki의 룩앤드필 전체에 대한 제어를 제공하기 위해 코드와 HTML 마크업을 혼합하는 PHP의 기능을 활용한다.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# MediaWiki는 스킨의 사용을 통해 wiki의 룩앤드필 전체에 대한 제어를 제공하기 위해 코드와 HTML 마크업을 혼합하는 PHP의 기능을 활용한다.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# 기본 PHP 코드 이외에도 스킨은 다양한 CSS 파일과 지원하는 이미지 또는 JavaScript를 포함할 수 있다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# 기본 PHP 코드 이외에도 스킨은 다양한 CSS 파일과 지원하는 이미지 또는 JavaScript를 포함할 수 있다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Devcafe</name></author>
	</entry>
	<entry>
		<id>https://devcafe.co.kr/w/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4_%ED%99%95%EC%9E%A5_extention_%ED%99%9C%EC%9A%A9%EA%B0%80%EC%9D%B4%EB%93%9C&amp;diff=422&amp;oldid=prev</id>
		<title>Devcafe: 새 문서: == MediaWiki Extention ,기능 확장 == # Extention은 글를 쓰기 위해 사용되는 wiki 마크업에 새 태그를 추가하고 # 특수 페이지를 작성하여 새로운 보고와 관리 기능을 추가하며 # 형식화 스킨을 통해 wiki의 룩앤드필을 변경하며 # 외부 인증 메소드와 통합할 수 있다 * Extention 은 PHP로 작성되며 MediaWiki의 다양한 내부 연결, 클래스 및 메소드를 활용하여 그 임무를 효과적으로 수...</title>
		<link rel="alternate" type="text/html" href="https://devcafe.co.kr/w/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4_%ED%99%95%EC%9E%A5_extention_%ED%99%9C%EC%9A%A9%EA%B0%80%EC%9D%B4%EB%93%9C&amp;diff=422&amp;oldid=prev"/>
		<updated>2024-10-14T18:06:00Z</updated>

		<summary type="html">&lt;p&gt;새 문서: == MediaWiki Extention ,기능 확장 == # Extention은 글를 쓰기 위해 사용되는 wiki 마크업에 새 태그를 추가하고 # 특수 페이지를 작성하여 새로운 보고와 관리 기능을 추가하며 # 형식화 스킨을 통해 wiki의 룩앤드필을 변경하며 # 외부 인증 메소드와 통합할 수 있다 * Extention 은 PHP로 작성되며 MediaWiki의 다양한 내부 연결, 클래스 및 메소드를 활용하여 그 임무를 효과적으로 수...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== MediaWiki Extention ,기능 확장 ==&lt;br /&gt;
# Extention은 글를 쓰기 위해 사용되는 wiki 마크업에 새 태그를 추가하고&lt;br /&gt;
# 특수 페이지를 작성하여 새로운 보고와 관리 기능을 추가하며&lt;br /&gt;
# 형식화 스킨을 통해 wiki의 룩앤드필을 변경하며&lt;br /&gt;
# 외부 인증 메소드와 통합할 수 있다&lt;br /&gt;
* Extention 은 PHP로 작성되며 MediaWiki의 다양한 내부 연결, 클래스 및 메소드를 활용하여 그 임무를 효과적으로 수행한다. &lt;br /&gt;
----&lt;br /&gt;
=== Extention 위치/파일구조 ===&lt;br /&gt;
# MediaWiki Extenion은 기본 MediaWiki 경로에서 extention 디렉토리에 설치된다. &lt;br /&gt;
# 대부분의 Extention은 개별 디렉토리에 설치되고 3개의 파일로 구성된다(extension은 확장의 이름이다).&lt;br /&gt;
## /extension/익스텐션명/extension.php&lt;br /&gt;
##: 파일은 초기화와 설치 태스크를 수행&lt;br /&gt;
## /extension/익스텐션명/extension.body.php&lt;br /&gt;
##: 확장의 본문이며, 확장을 구현하는 작업 코드&lt;br /&gt;
## /extension/익스텐션명/extension.i18n.php&lt;br /&gt;
##: 국제화(i18n은 일반적인 짧은 양식이다) 문자열이 포함된다&lt;br /&gt;
* 확장의 메시지 스트링을 i18n 파일로 요약하여 모든 MediaWiki의 지원되는 로케일을 위한 확장의 현지화된 버전을 제공할 수 있다&lt;br /&gt;
&lt;br /&gt;
==== 예제) CHTimeStamp이라는 Hello World 확장의 종류 작성 ====&lt;br /&gt;
* (이 기사의 이 예제 및 다른 예제에 대한 소스 코드는 다운로드를 참조). &lt;br /&gt;
* CHTimeStamp는 누군가가 wiki 페이지에 {{CHSTAMP}}를 삽입할 때마다 현재 날짜/타임스탬프를 삽입 한다. &lt;br /&gt;
&lt;br /&gt;
===== 파일 구성 ===== &lt;br /&gt;
# CHTimeStamp/CHTimeStamp.php&lt;br /&gt;
# CHTimeStamp/CHTimeStamp.body.php&lt;br /&gt;
# CHTimeStamp/CHTimeStamp.i18n.php&lt;br /&gt;
* CHTimeStamp 확장은 MediaWiki의 마크업에 {{CHSTAMP}} 변수 추가. &lt;br /&gt;
* 페이지에 {{CHSTAMP}}를 넣을 때마다 이는 날짜/타임스탬프로 대체된다. &lt;br /&gt;
&lt;br /&gt;
===== 파일 역활/상세 설명 =====&lt;br /&gt;
# CHTimeStamp.php는 국제화 메시지 파일을 등록 &lt;br /&gt;
## wiki 엔진에 이 파일이 CHTimeStamp 클래스를 CHTimeStamp.body.php에서 찾을 수 있다고 알려준다 &lt;br /&gt;
## CHTimeStamp::registerHooks 메소드를 확장 함수의 배열에 추가한다.&lt;br /&gt;
# CHTimeStamp.body.php에서 CHTimeStamp 클래스를 정의한다. &lt;br /&gt;
## 코드를 살펴보면 이는 전체적으로 정적 메소드로만 만들어져 있기 때문에, 확장의 작동을 변경하지 않고 함수의 시리즈로도 쓰여질 수 있었다. &lt;br /&gt;
## CHTimeStamp의 registerHooks 메소드는 정적 메소드를 등록하여 {{CHSTAMP}} 변수를 작성하고 이를 사용하는 페이지를 핸들링한다.&lt;br /&gt;
# CHTimeStamp.i18n.php에서 확장의 유일한 정적 문자열인 설명에 대한 해석을 작성하였다. &lt;br /&gt;
## Google Translate의 도움을 받아 CHTimeStamp는 프랑스어, 독일어 및 스페인어 로케일을 지원한다. &lt;br /&gt;
&lt;br /&gt;
==== Extention 을 MediaWiki에 설치하기 ====&lt;br /&gt;
# MediaWiki의 루트 디렉토리에서 LocalSettings.php를 편집 &lt;br /&gt;
## PHP의 require_once() 명령문을 사용하여 이를 활성화&lt;br /&gt;
##: - 예를 들어 CHTimeStamp를 설치하기 위해 CHTimeStamp 디렉토리를 확장 디렉토리에 복사하였고 다음 require_once( &amp;quot;$IP/extensions/CHTimeStamp/CHTimeStamp.php&amp;quot; );를 LocalSettings.php에 추가.&lt;br /&gt;
# ”wiki 검색창“ 에 Special:Version 페이지를 입력하고 익스텐션이 로드되었는지 확인. &lt;br /&gt;
#: * Special:Version 페이지가 실행 중인 MediaWiki 버전에 대한 정보 이외에도 로드한 확장을 나열한다.&lt;br /&gt;
#: https://dataonair.or.kr/publishing/img/knowledge/20101117_44_2.jpg&lt;br /&gt;
&lt;br /&gt;
==== 룩앤드필 사용자 정의하기 ====&lt;br /&gt;
# MediaWiki는 스킨의 사용을 통해 wiki의 룩앤드필 전체에 대한 제어를 제공하기 위해 코드와 HTML 마크업을 혼합하는 PHP의 기능을 활용한다. &lt;br /&gt;
# 기본 PHP 코드 이외에도 스킨은 다양한 CSS 파일과 지원하는 이미지 또는 JavaScript를 포함할 수 있다.&lt;br /&gt;
# 스킨은 일반적으로 두 개의 PHP 파일과 하나의 추가 지원 파일을 위한 디렉토리로 구성된다. &lt;br /&gt;
## 예를 들어 유명한 기본 스킨인 MonoBook은 다음으로 되어 있다.&lt;br /&gt;
##:-MonoBook.php ― 기본 MonoBook 스킨 코드&lt;br /&gt;
##:-MonoBook.deps.php ― PHP V5의 APC 연산 코드 캐시에서 버그를 위한 수정사항&lt;br /&gt;
##:-monobook/ ― 지원하는 CSS와 그래픽&lt;br /&gt;
# 스킨의 이름 지정 규칙은 매우 엄격하여, 지원 폴더 이름으로 SkinName.php, SkinName.deps.php 및 skinname(소문자)가 필요하다.&lt;br /&gt;
## skinname 폴더 내에 스킨의 스타일링을 위한 main.css가 있을 것이다. &lt;br /&gt;
## 브라우저별 스타일시트 수정사항도 여기에 소속되어 있기 때문에 때로는 FF2Fixes.css, IE6Fixes.css, Opera6Fixes.css 등을 찾을 수 있다.&lt;br /&gt;
&lt;br /&gt;
===== SkinName.php =====&lt;br /&gt;
* 일부 유용한 메타데이터로 동작&lt;br /&gt;
&lt;br /&gt;
1) MediaWiki 스킨 메타데이터&lt;br /&gt;
&amp;lt;source lang=php&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
* [SkinName] skin&lt;br /&gt;
*&lt;br /&gt;
* @file&lt;br /&gt;
* @ingroup Skins&lt;br /&gt;
* @version [#].[#].[#]&lt;br /&gt;
* @author [name] ([URL] / [E-Mail])&lt;br /&gt;
* @license [URL] [name]&lt;br /&gt;
*/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# 꺾쇠괄호 안의 모든 것을 스킨에 적합한 것으로 바꾼다.&lt;br /&gt;
# 그 다음에 SkinTemplate의 서브클래스를 작성하고, 스킨의 이름, 스타일 및 템플리트를 표시하는 initPage 메소드를 오버라이드해야 한다. &lt;br /&gt;
# SkinName 및 skinname을 스킨의 이름으로 바꾸는 것을 기억하자.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
2) 새 스킨을 제공하기 위한 SkinTemplate 확장하기&lt;br /&gt;
&amp;lt;source lang=php&amp;gt;&lt;br /&gt;
// inherit main code from SkinTemplate, set the CSS and template filter&lt;br /&gt;
class SkinSkinName extends SkinTemplate {&lt;br /&gt;
function initPage( OutputPage $out ) {&lt;br /&gt;
parent::initPage( $out );&lt;br /&gt;
$this-&amp;gt;skinname = &amp;#039;skinname&amp;#039;;&lt;br /&gt;
$this-&amp;gt;stylename = &amp;#039;skinname&amp;#039;;&lt;br /&gt;
$this-&amp;gt;template = &amp;#039;SkinNameTemplate&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 스킨에서 가장 열심히 일하는 것은 QuickTemplate 서브클래스일 것이다.&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
3) 대부분의 작업이 템플릿에서 완료됨&lt;br /&gt;
&amp;lt;source lang=php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class SkinNameTemplate extends QuickTemplate {&lt;br /&gt;
...&lt;br /&gt;
/**&lt;br /&gt;
* Template filter callback for this skin.&lt;br /&gt;
* Takes an associative array of data set from a SkinTemplate-based&lt;br /&gt;
* class, and a wrapper for MediaWiki&amp;#039;s localization database, and&lt;br /&gt;
* outputs a formatted page.&lt;br /&gt;
*/&lt;br /&gt;
public function execute() {&lt;br /&gt;
global $wgUser, $wgSitename;&lt;br /&gt;
$skin = $wgUser-&amp;gt;getSkin();&lt;br /&gt;
&lt;br /&gt;
// retrieve site name&lt;br /&gt;
$this-&amp;gt;set( &amp;#039;sitename&amp;#039;, $wgSitename );&lt;br /&gt;
&lt;br /&gt;
// suppress warnings to prevent notices about missing indexes&lt;br /&gt;
// in $this-&amp;gt;data&lt;br /&gt;
wfSuppressWarnings();&lt;br /&gt;
&lt;br /&gt;
/* compose XHTML output */&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;br /&gt;
&amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
# QuickTemplate 서브클래스 내에서 범주 목록과 원하는 방식의 상호 참조와 같은 것들을 형식화하고 스타일링하는 메소드를 오버라이드할 것이다. &lt;br /&gt;
# 이 클래스의 execute 메소드는 XHTML 문서로 전체 페이지를 레이아웃하여 페이지 조직과 스타일링 전체의 제어를 제공한다.&lt;br /&gt;
# 여기에서 XHTML과 CSS 페이지 레이아웃과 스타일링에 들어갈 수는 없으니까 바로 시도해 볼 수 있는 예제를 위해 MediaWiki의 스킨 폴더를 한 번 살펴보자.&lt;br /&gt;
&lt;br /&gt;
==== 특별 페이지 추가하기 ====&lt;br /&gt;
# MediaWiki에서 특수 페이지가 시스템 전체의 메시지 텍스트를 편집하고 설치된 확장을 나열하거나 외부 링크의 목록을 받을 수 있는 등 구체적이고 wiki에 유용할 수 있는 작업을 하도록 요청 시 생성된다.&lt;br /&gt;
# 달리 지정하지 않는 경우에 특수 페이지는 누구나 사용 가능하며 특수 페이지의 Special:SpecialPages 목록에 나타난다. &lt;br /&gt;
# 또한 특수 페이지를 설정할 수도 있기 때문에 {{Special:YourPageName}} 구문을 사용하여 페이지에 인라인을 포함시킬 수 있다.&lt;br /&gt;
# 다른 확장과 마찬가지로 특수 페이지는 하나의 디렉토리로 확장 폴더에 설치된다. 이는 네 가지 파일로 구성되어 있다.&lt;br /&gt;
## -specialpage/specialpage.php ― 확장의 설정 파일&lt;br /&gt;
## -specialpage/specialpage.aliases.php ― 특수 페이지의 이름을 위한 별명&lt;br /&gt;
## -specialpage/specialpage.body.php ― 특수 페이지의 기본 코드&lt;br /&gt;
## -specialpage/specialpage.i18n.php ― 특수 페이지의 국제화 문자열&lt;br /&gt;
# CHStats.php에서 코드는 확장을 위해 대변을 추가하고, 별명, 본문 및 i18n 파일을 등록하며, 필요한 경우에 wiki 엔진에 CHStats 클래스를 자동로드하도록 알려준다.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
4) CHStats 특수 페이지 설정하기 &lt;br /&gt;
&amp;lt;source lang=php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;php&lt;br /&gt;
# This is not a valid entry point to MediaWiki.&lt;br /&gt;
if( !defined( &amp;#039;MEDIAWIKI&amp;#039; ) ) {&lt;br /&gt;
echo &amp;lt;&amp;lt;&amp;lt;EOT&lt;br /&gt;
To install CHStats, put the following line in LocalSettings.php:&lt;br /&gt;
require_once( &amp;quot;\$IP/extensions/CHStats/CHStats.php&amp;quot; );&lt;br /&gt;
EOT;&lt;br /&gt;
exit( 1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Take credit for this extension.&lt;br /&gt;
$wgExtensionCredits[&amp;#039;specialpage&amp;#039;][] = array(&lt;br /&gt;
&amp;#039;name&amp;#039; =&amp;gt; &amp;#039;CHStats&amp;#039;,&lt;br /&gt;
&amp;#039;author&amp;#039; =&amp;gt; &amp;#039;Chris Herborth (chrish@pobox.com)&amp;#039;,&lt;br /&gt;
&amp;#039;url&amp;#039; =&amp;gt; &amp;#039;http://www.pobox.com/~chrish/CHStats/&amp;#039;,&lt;br /&gt;
&amp;#039;description&amp;#039; =&amp;gt; &amp;#039;A simple special page demonstration, showing some DB stats.&amp;#039;,&lt;br /&gt;
&amp;#039;descriptionmsg&amp;#039; =&amp;gt; &amp;#039;chstats-desc&amp;#039;,&lt;br /&gt;
&amp;#039;version&amp;#039; =&amp;gt; &amp;#039;1.0.0&amp;#039;,&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
$dir = dirname( __FILE__ ) . &amp;#039;/&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
# Register the extension&amp;#039;s main code/class.&lt;br /&gt;
$wgAutoloadClasses[&amp;#039;CHStats&amp;#039;] = $dir . &amp;#039;CHStats.body.php&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
# Register our internationalization files.&lt;br /&gt;
$wgExtensionMessagesFiles[&amp;#039;CHStats&amp;#039;] = $dir . &amp;#039;CHStats.i18n.php&amp;#039;;&lt;br /&gt;
$wgExtensionAliasesFiles[&amp;#039;CHStats&amp;#039;] = $dir . &amp;#039;CHStats.aliases.php&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
# Let MediaWiki know about the new special page.&lt;br /&gt;
$wgSpecialPages[&amp;#039;CHStats&amp;#039;] = &amp;#039;CHStats&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
# CHStats.body.php에서 새 클래스인 CHStats를 작성하는데, 이는 SpecialPage 클래스를 확장한 것이다. 생성자에서 상위 클래스를 초기화한 다음에 wfLoadExtensionMessages를 호출하여 국제화 메시지를 로드한다. 액세스를 # 제한하고 페이지를 숨길 수 있는 SpecialPage 클래스 생성자에 대한 자세한 내용을 보려면 특수 페이지 개발자의 안내서 페이지를 확인한다&lt;br /&gt;
# execute 메소드의 오버라이드는 페이지를 생성하는 작업을 한다.&lt;br /&gt;
----&lt;br /&gt;
5) CHStats 특수 페이지 생성하기&lt;br /&gt;
&amp;lt;source lang=php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# This is where the special page&amp;#039;s output is created.&lt;br /&gt;
function execute( $par ) {&lt;br /&gt;
global $wgOut;&lt;br /&gt;
&lt;br /&gt;
# Initialize the output page.&lt;br /&gt;
$this-&amp;gt;setHeaders();&lt;br /&gt;
&lt;br /&gt;
# Do stuff.&lt;br /&gt;
$wgOut-&amp;gt;addWikiText( &amp;quot;Some stats about this &amp;#039;&amp;#039;&amp;#039;Wiki&amp;#039;&amp;#039;&amp;#039;:&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
$db = wfGetDB( DB_SLAVE );&lt;br /&gt;
// SELECT ... FROM site_stats&lt;br /&gt;
$result = $db-&amp;gt;select( &amp;#039;site_stats&amp;#039;,&lt;br /&gt;
array( &amp;#039;ss_total_views&amp;#039;, &amp;#039;ss_total_edits&amp;#039;,&lt;br /&gt;
&amp;#039;ss_total_pages&amp;#039;, &amp;#039;ss_users&amp;#039; ) );&lt;br /&gt;
$statList = array();&lt;br /&gt;
foreach( $result as $row ) {&lt;br /&gt;
$statList[] = &amp;#039;* Total page views: &amp;#039; . $row-&amp;gt;ss_total_views;&lt;br /&gt;
$statList[] = &amp;#039;* Total page edits: &amp;#039; . $row-&amp;gt;ss_total_edits;&lt;br /&gt;
$statList[] = &amp;#039;* Total # of users: &amp;#039; . $row-&amp;gt;ss_users;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$wgOut-&amp;gt;addWikiText( implode( &amp;quot;\n&amp;quot;, $statList ) );&lt;br /&gt;
&lt;br /&gt;
$wgOut-&amp;gt;addWikiText( &amp;quot;That&amp;#039;s it.&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# execute 메소드에서 $par 인수는 서브페이지이다. &lt;br /&gt;
## 예를 들어 Special:CHStats/foo를 로드하면 $par는 foo로 설정될 것이다(분명히 역사적인 특이한 이름이다).&lt;br /&gt;
# 먼저 페이지 머리글을 설정하기 위해 setHeaders 메소드를 사용한 다음에 결과물 스트림에 일부 마크업을 쓰기 위해 $wgOut-&amp;gt;addWikiText를 호출한다. &lt;br /&gt;
# 형식화된 HTML을 직접 쓰기 위해 $wgOut-&amp;gt;addHTML도 사용할 수 있지만 필자는 결과물에서 wiki 마크업을 사용하고 있다. &lt;br /&gt;
# 이에 대한 자세한 내용과 다른 페이지에서 인라인을 포함시킬 수 있는 특수 페이지로 wiki 마크업 및/또는 HTML을 적절하게 추가하는 방법을 보려면 특수 페이지 개발자의 안내서를 참조한다(참고자료 참조).&lt;br /&gt;
# CHStats 페이지는 데이터베이스에 대한 참조를 얻기 위해 wfGetDB 함수를 사용한다(읽기 전용 조작을 위해서는 DB_SLAVE를 사용하고, 쓰기 전용 조작을 위해서는 DB_MASTER를 사용함). &lt;br /&gt;
# 그 다음에 site_stats 데이터베이스로부터 몇 가지 필드를 선택하고 wiki 마크업을 사용하여 글머리 기호 목록으로 결과를 형식화한다.&lt;br /&gt;
# 이 특수 페이지의 결과물의 모양은 그림 4와 같이 표시될 수 있다.&lt;br /&gt;
#: https://dataonair.or.kr/publishing/img/knowledge/20101117_44_4.jpg%0A&lt;br /&gt;
# CHStats.i18n.php에서 찾을 수 있는 국제화 문자열은 지원되는 언어당 항목 한 개의 배열로 구성되어 있다(영어, 프랑스어, 독일어 및 이 경우에는 스페인어). &lt;br /&gt;
# 각 항목에서 배열 맵핑 문자열 ID는 현지화된 텍스트에 해당되는 것이다. &lt;br /&gt;
## Google Translate는 프랑스어, 독일어 및 스페인어 비트에 사용되었의 현지화된 버전이 들어있는 유사한 배열이 있다. 이를 통해 프랑스어 사용자(예를 들어)는 Sp？cial:StatsCH로 페이지에 액세스한다.&lt;br /&gt;
&lt;br /&gt;
* 태그 추가하기&lt;br /&gt;
# MediaWiki를 확장하는 다른 유명한 방법은 새 XML 태그의 지원을 마크업에 추가하는 것이다. &lt;br /&gt;
# 이러한 태그는 태그 속성이나 내용에 기반하여 다른 결과물을 제작할 수 있고, 인라인 HTML 또는 심지어 형식화된 결과물의 큰 블록을 삽입하는 데 유용하다.&lt;br /&gt;
# 태그 확장은 확장 폴더 아래 고유한 디렉토리에 설치되고 이 기사의 시작 부분에 설명했던 세 가지 파일 규칙을 사용한다. &lt;br /&gt;
# CHUser이라는 이름으로 제작한 간단한 예제를 살펴보자.&lt;br /&gt;
## -CHUser/CHUser.php ― 확장 설정&lt;br /&gt;
## -CHUser/CHUser.body.php ― 기본 확장 코드&lt;br /&gt;
## -CHUser/CHUser.i18n.php ― 국제화 데이터&lt;br /&gt;
# 비록 $wgHooks 배열을 사용하여 확장의 init 메소드를 ParserFirstCallInit 목록에 추가하고 있다고 하더라도 CHUser.php에서 진행 중인 확장 설정은 이미 본 것과 유사하다. &lt;br /&gt;
# CHUser::init은 첫 번째 사용될 때 호출될 것이다.&lt;br /&gt;
----&lt;br /&gt;
6) 태그 확장 설정하기&lt;br /&gt;
&amp;lt;source lang=php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Let MediaWiki know about the new tag.&lt;br /&gt;
$wgHooks[&amp;#039;ParserFirstCallInit&amp;#039;][] = &amp;#039;CHUser::init&amp;#039;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
# CHUser.body.php 내에서 init 메소드는 두 가지 태그인 &amp;lt;chuser&amp;gt;와 &amp;lt;bz&amp;gt;를 등록한다(Listing 7 참조). 이 확장은 하나의 확장에 두 개의 서로 다른 태그를 제공한다. &lt;br /&gt;
# 원하는 경우 이 기사에서 논의한 모든 확장을 쉽게 결합할 수 있다. &lt;br /&gt;
# 분리하는 데 필요한 요구사항은 없다(독자 고유의 목표를 제외하고).&lt;br /&gt;
----&lt;br /&gt;
7) 태그 등록하기&lt;br /&gt;
&amp;lt;source lang=php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public static function init( &amp;amp;$parser ) {&lt;br /&gt;
# Add our &amp;lt;chuser&amp;gt; tag handler, the continue.&lt;br /&gt;
$parser-&amp;gt;setHook( &amp;#039;chuser&amp;#039;, &amp;#039;CHUser::render&amp;#039; );&lt;br /&gt;
$parser-&amp;gt;setHook( &amp;#039;bz&amp;#039;, &amp;#039;CHUser::renderBugzilla&amp;#039; );&lt;br /&gt;
return true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
# wiki 마크업 엔진은 &amp;lt;chuser&amp;gt; 태그가 발생할 때마다 CHUser::render 메소드를 호출하고 &amp;lt;bz&amp;gt; 태그는 CHUser::renderBugzilla를 호출할 것이다.&lt;br /&gt;
# &amp;lt;chuser&amp;gt; 렌더링 메소드는 지정된 사용자의 전체 이름과 이메일 주소를 선택하고 사용자의 전체 이름(있는 경우)을 랩핑하는 mailto: 링크로 이를 형식화한다. &lt;br /&gt;
8) 에서 부터 전체 이름 또는 이메일 주소가 데이터베이스에 없는 케이스를 대부분의 논리가 간단하게 핸들링하는 것을 볼 수 있다(예를 들어 필자의 wiki에서 Admin 계정의 경우에 해당).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
8) UserName 핸들링하기&lt;br /&gt;
&amp;lt;source lang=php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public static function render( $input, $args, $parser, $frame ) {&lt;br /&gt;
$user = mysql_escape_string( $input );&lt;br /&gt;
&lt;br /&gt;
$db = wfGetDB( DB_SLAVE );&lt;br /&gt;
// SELECT ... FROM user&lt;br /&gt;
$result = $db-&amp;gt;select( &amp;#039;user&amp;#039;,&lt;br /&gt;
array( &amp;#039;user_real_name&amp;#039;, &amp;#039;user_email&amp;#039; ),&lt;br /&gt;
&amp;#039;user_name = \&amp;#039;&amp;#039; . $user . &amp;#039;\&amp;#039;&amp;#039; );&lt;br /&gt;
$mailtos = array();&lt;br /&gt;
foreach( $result as $row ) {&lt;br /&gt;
$thisUser = &amp;#039;&amp;lt;span class=&amp;quot;user&amp;quot;&amp;gt;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
if( $row-&amp;gt;user_email ) {&lt;br /&gt;
$thisUser = $thisUser . &amp;#039;&amp;lt;a href=&amp;quot;mailto:&amp;#039;&lt;br /&gt;
. htmlspecialchars( $row-&amp;gt;user_email ) . &amp;#039;&amp;quot;&amp;gt;&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if( $row-&amp;gt;user_real_name ) {&lt;br /&gt;
$thisUser = $thisUser . htmlspecialchars( $row-&amp;gt;user_real_name );&lt;br /&gt;
} else {&lt;br /&gt;
$thisUser = $thisUser . htmlspecialchars( $input );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if( $row-&amp;gt;user_email ) {&lt;br /&gt;
$thisUser = $thisUser . &amp;#039;&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$thisUser = $thisUser . &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
$mailtos[] = $thisUser;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return implode( &amp;quot;, &amp;quot;, $mailtos );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
# 9) 는 &amp;lt;bz&amp;gt; 태그가 어떻게 그 ID 속성을 사용하여 MediaWiki Bugzilla 데이터베이스에서 지정된 버그 보고서로 링크하는지 보여준다. &lt;br /&gt;
# 이는 외부 데이터 소스로 작업하는 것이 얼마나 쉬운지 보여준다. &lt;br /&gt;
# 고급스럽게 수행하려면 Ajax를 사용하여 링크하는 것이 아니라 버그 보고서를 로드하고, 링크 대신에 일부 데이터를 표시할 수 있다.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
9) MediaWiki Bugzilla로 링크&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public static function renderBugzilla( $input, $args, $parser, $frame ) {&lt;br /&gt;
$retval = &amp;#039;&amp;#039;;&lt;br /&gt;
if( $args[&amp;#039;id&amp;#039;] ) {&lt;br /&gt;
$bzId = htmlspecialchars( $args[&amp;#039;id&amp;#039;] );&lt;br /&gt;
&lt;br /&gt;
$retval = &amp;#039;&amp;lt;a href=&amp;quot;https://bugzilla.wikimedia.org/show_bug.cgiid=&amp;#039;&lt;br /&gt;
. $bzId . &amp;#039;&amp;quot;&amp;gt;MediaWiki Bug #&amp;#039; . $bzId . &amp;#039;&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
} else {&lt;br /&gt;
$retval = &amp;#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;No bug ID specified&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return $retval;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
그림 5에서 작동 중인 이러한 두 개의 태그를 볼 수 있다.&lt;br /&gt;
그림 5. 작동 중인 확장&lt;br /&gt;
&lt;br /&gt;
10) 에서는 페이지의 섹션에 대한 wiki 마크업의 모양을 보여준다.&lt;br /&gt;
&lt;br /&gt;
---- &lt;br /&gt;
&lt;br /&gt;
10) 확장을 시연하는 wiki 마크업&lt;br /&gt;
&lt;br /&gt;
* Extension testing &lt;br /&gt;
https://dataonair.or.kr/publishing/img/knowledge/20101117_44_5.jpg&lt;br /&gt;
&lt;br /&gt;
If this is working, we should see a timestamp: {{CHSTAMP}}&lt;br /&gt;
&lt;br /&gt;
CHUser info:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Admin&amp;#039;&amp;#039;&amp;#039;: &amp;lt;chuser&amp;gt;Admin&amp;lt;/chuser&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Chrish&amp;#039;&amp;#039;&amp;#039;: &amp;lt;chuser&amp;gt;Chrish&amp;lt;/chuser&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bz id=&amp;quot;1024&amp;quot; /&amp;gt;&lt;br /&gt;
# CHUser 확장으로부터 볼 수 있는 것과 같이 사용자 정의 XML 태그의 지원을 추가하는 것은 쉽고 이를 통해 거의 모든 것을 할 수 있다. &lt;br /&gt;
# 모든 PHP 기능과 MediaWiki 서비스가 사용 가능하므로 데이터를 외부 시스템으로부터 뽑아내고(또는 여기로 데이터를 전송하거나) 현재 사용자의 신임 정보와 권한에 기반하여 작동을 변경하거나 뷰어의 브라우저에서 직접 태스크를 실행하도록 JavaScript를 삽입한다. &lt;br /&gt;
# 가능성과 무한대는 고유의 특정 필요성과 요구 사항에만 제한을 받는다.&lt;br /&gt;
&lt;br /&gt;
{{틀:고지상자 &lt;br /&gt;
|제목=* 익스텐션 기능 요약&lt;br /&gt;
|내용=# MediaWiki의 확장 규칙 안내 &lt;br /&gt;
# MediaWiki 확장 쓰기에 대한 소개로서 간단한 wiki 변수 확장을 작성하는 방법&lt;br /&gt;
# MediaWiki의 스킨 기능의 개요는 독자 고유의 사용자 정의된 사이트 레이아웃의 작성을 시작하는 데 유용하다.&lt;br /&gt;
# 특수 페이지는 데이터베이스이든 다른 소스이든 이로 부터 검색하여 정보를 생성하는 데 사용되기 때문에 시스템의 일부 통계를 표시하는 것을 생성. &lt;br /&gt;
# 그 다음에 아무 페이지에서나 wiki 마크업에 포함될 수 있는 두 개의 사용자 정의 XML 태그 작성.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Devcafe</name></author>
	</entry>
</feed>