사용자:IRTC1015/틀 도움말
읽기 쉬운 코드 쓰기[편집]
- 변수 이름은 간단하고 알아보기 쉽게
- 띄어쓰기와 줄바꿈
문법 요소(중괄호, 파이프, 등호 등) 사이의 공백이나 한 줄의 줄바꿈은 대개 무시되므로, 가독성을 위해 적절히 넣어주는 것이 좋다. 줄바꿈에 의한 오동작이 우려될 경우 HTML의 주석(<!-- -->)을 사용하여 가독성을 확보하는 수가 있다.(<!--\n--> 같은 식)
- 주석
- 코드가 복잡해지면 그것을 다른 사람이 읽을 때나, 심지어 작성자 본인이 시간이 흐른 뒤에 읽을 때도 해석에 시간이 오래 걸릴 수 있다. 코드가 너무 방대하다면 생각해 보자.
변수[편집]
{{{변수이름}}}이 기본. 틀을 불러올 때 {{틀이름 | 변수이름 = 변수내용 }}의 형식을 사용. {{{변수이름| foo }}}와 같이 이름 뒤에 파이프를 넣고 그 뒤에 내용을 쓰는 경우, 변수가 없을 때 파이프 뒤의 내용이 나타남. {{틀이름 | 변수이름 = }}과 같이 변수를 입력했으나 내용이 없는 경우는 “내용이 없는 변수”가 입력된 것이므로 파이프 뒤의 내용은 나타나지 않음.
cf) {{#if: {{{변수|}}} | {{{변수}}} | foo }}로 사용할 경우, if는 조건 부분이 “비면” false로 보기 때문에, {{틀이름 | 변수이름 = }}와 같이 사용하더라도 false의 내용인 foo를 반환.
onlyinclude, includeonly, noinclude[편집]
onlyinclude[편집]
끼워넣어질 때 태그 안쪽의 내용만을 불러오도록 지정. 사용하면 태그 밖에서 뭘 쓰든 틀 동작에는 영향을 미치지 않지만, 어쨌든 틀 문서 전체를 다 읽어온 뒤 어느 부분을 끼워넣을지 판단해야 하므로, 틀의 동작에 관계 없는 내용은 되도록 틀 문서에 적은 편이 좋다. 설명 등은 틀:틀 설명문서로.
includeonly[편집]
태그 안쪽의 내용을 끼워넣어질 때에만 불러오도록 지정. 틀 문서에서는 없는 부분으로 취급되기 때문에 주로 틀 사용과 함께 분류를 지정할 때 사용.
{{{변수명<includeonly>|</includeonly>}}} 트릭[편집]
항목1 | {{{변수1}}} |
---|---|
항목2 | {{{변수2}}} |
틀의 동작에는 전혀 영향이 없으나, 틀의 구조를 드러낼 때 상당히 유용한 트릭. 변수가 직접 나타나는 부분은 물론, #if 등 함수의 조건문에서 유용하게 사용된다. {{#if:{{{변수명<includeonly>|</includeonly>}}}| true | false }}로 썼을 때, 틀 문서에서는 includeonly의 효과로 파이프가 빠진 {{{변수명}}}만이 조건으로 들어가기 때문에, #if는 true를 반환. 실제 틀 사용시(즉, 틀이 끼워넣어질 경우)에는 includeonly 안의 내용이 포함된 {{{변수명|}}}이 포함되기 때문에, 변수가 없으면 {{{변수명|}}}은 공백이 되어 #if는 false를 반환.
noinclude[편집]
태그 안쪽의 내용을 끼워넣어질 때 불러오지 않도록 지정.
틀 내용까지 풀어쓰기[편집]
- <includeonly>풀기:</includeonly>
- 안전풀기:
- {{{|안전풀기:}}} 혹은 <includeonly>안전풀기:</includeonly>
ParserFunctions[편집]
초보자는 대부분 못 알아보지만, 틀 작성에 익숙해지면 안 쓸 일이 거의 없는 물건. 멀쩡한 설명이 필요하면 mw:Help:Extension:ParserFunctions를 참조.
#time, #timel[편집]
코드 | 설명 | 출력 |
---|---|---|
연도 | ||
Y | 4자리 연도 | 2024 |
y | 2자리 연도. 엔간하면 그냥 Y 쓰자. | 24 |
L | 그 해가 윤년이면 1, 아니면 0. | 1 |
o | ISO 8601 연 번호(ISO 주 정의 참조). | 2024 |
월 | ||
n | 월(숫자). 0 채우지 않기(1, 2, …, 12 ). | 7 |
m | 월(숫자). 0 채우기(01, 02, …, 12 ). | 07 |
M | 사이트 언어로 된 월 이름의 약어. 한국어에서는 n과 같음. | 7 |
F | 사이트 언어로 된 월 이름. | 7월 |
주 | ||
W | ISO 8601 주 번호. 0 채우기. | 28 |
일 | ||
j | 날짜. 0 채우지 않기. | 10 |
d | 날짜. 0 채우기. | 10 |
z | 그 해 1월 1일로부터 지난 날 수(1월 1일 = 0, 1월 2일: 1, …). | 191 |
D | 요일(약어). | 수 |
l | 요일. | 수요일 |
N | ISO 8601 요일 번호(월 = 1, 일 = 7). | 3 |
w | 요일 번호(일 = 0, 토 = 6). | 3 |
시 | ||
a | am/pm | pm |
A | AM/PM | PM |
g | 12시간제로 표기된 시. 0 채우지 않기. | 5 |
h | 12시간제로 표기된 시, 0 채우기. | 05 |
G | 24시간제로 표기된 시. 0 채우지 않기. | 17 |
H | 24시간제로 표기된 시, 0 채우기. | 17 |
분·초 | ||
i | 분. 0 채우기. | 30 |
s | 초. 0 채우기. | 55 |
U | 1970년 1월 1일 0시 0분 0초+00:00으로부터 지난 초. | 1720632655 |
기타 | ||
L | 윤년 여부(1 = 윤년) | 1 |
t | 그 달의 날 수. | 31 |
#time과 #timel의 차이는 표준시냐 지역 시간대(서버 설정, 한국어 위키백과는 UTC+9)냐의 차이.
{{#time: 형식 | 시간 }}
여기에 입력하는 시간은 절대적일 수도 있고 상대적일 수도 있고, 둘을 섞을 수도 있다. “2010년 1월 1일 0시 0분”, “(지금으로부터) 6일 뒤”, “2012년 12월 21일 12시 34분으로부터 1일 18초 뒤” 같은 게 모두 된다는 소리. 다만 뒤의 시간은 php에서 인식할 수 있는 형식이어야 하고, 한국어로 입력하면 당연하게도(?) 안 된다.
0이 채워진 형식만 제공될 경우, #expr로 감싸주면 0을 뗄 수 있다.
#switch[편집]
{{#switch: 조건 | 경우1 = 결과1 | 경우2 = 결과2| ... }}
조건을 받아서, 경우 중 조건과 일치하는 것의 결과를 출력한다. 모두 일치하지 않는 경우 기본값(설정되어 있지 않으면 null)을 출력한다.
기본값은 switch문 맨 마지막에 등호 없이 ... | 기본값 }}
의 형태로 입력하며, 출력되는 값에 등호가 필요할 경우 ... | #default = 기본값 }}
의 형식을 사용할 수 있다.
조건은 모두 문자열로 취급되지만, 내부에 사용된 특수 함수나 틀은 파싱이 이루어진 상태에서 비교한다. {{#switch:{{{1}}}| {{ foo }} = A | B }}
라는 코드에서, {{{1}}}에 중괄호와 틀 이름 사이에 공백이 없는 {{foo}}
를 써도, 틀 foo를 불러온 결과는 같기 때문에 이 코드는 A를 출력한다. {{#switch:{{{1}}}| [[ foo ]] = A | B }}
의 경우에는, {{{1}}}에 [[foo]]
가 입력되면 파서는 [[foo]]
와 [[ foo ]]
가 같지 않다고 보기 때문에 B가 출력된다.
여러 경우에 대해 같은 결과를 출력할 때는, 같은 결과가 필요한 경우를 연속해서 배열한 뒤 마지막에 원하는 결과를 쓰면 된다. 이를테면, {{#switch:{{{1|}}}| a | b | c = A | B }}
라는 코드가 있을 때, {{{1}}}에 a나 b, c가 입력되면 모두 A를 출력하고, 그 외의 값에 대해서는 기본값인 B를 출력한다. 이 코드는 {{#switch:{{{1|}}}| a = A | b = A | c = A | #default = B }}
와 완전히 같은 동작을 한다.
조건이 빈 문자열일 때에는, ... | = 결과
의 형식으로 써 주면 된다.
같은 함수 내에서 같은 조건에 대해 다른 결과가 여러 번 지정된 경우에는 맨 처음 지정된 값이 출력된다. {{#switch:{{{1|}}}| a | b | c = A | b = B }}
에서 {{{1}}}에 b가 올 경우, 먼저 지정된 결과인 A가 출력되고 나중에 지정된 결과인 B는 무시된다.
#if[편집]
{{#if: 조건 | 참 | 거짓 }}}}
사용법이 가장 간단하고, 가장 쓸 일도 많은 함수. 조건에 줄바꿈과 공백을 제외한 문자 있다면 참의, 아니면 거짓의 내용을 반환. 거짓을 쓰지 않으면 그냥 빈 문자열을 반환. 조건에는 {{{변수명|}}}으로 변수를 넣는 경우가 절대 다수이고(당연하지만), 조건에 필요한 변수가 여럿이면 {{{변수1|}}}{{{변수2|}}} 식으로 여러 변수를 넣기도.
#ifeq[편집]
{{#ifeq: 조건1 | 조건2 | 참 | 거짓 }}}}
조건1과 조건2가 일치하면 참을, 아니면 거짓을 반환. 조건이 숫자면 숫자를 비교하고, 숫자 말고 다른 게 들어가 있으면 문자열로 취급해서 비교. 대소문자를 구분한다.
{{#ifeq: 01 | 1 | 참 | 거짓 }}}}
→ 참{{#ifeq: "01" | "1" | 참 | 거짓 }}}}
→ 거짓
#ifexpr[편집]
{{#ifexpr: 조건 | 참 | 거짓 }}
수식의 결과에 따라 참과 거짓을 반환. 다른 프로그래밍 언어에서 흔히 보는 if는 사실 이거다. 물론 논리식도 사용 가능.
#iferror[편집]
{{#iferror: 조건 | 오류일 때 값 | 정상일 때 값 }}
조건의 식이 오류이면(정확히는, 조건의 결과로 출력된 문자열이 class가 "error"인 HTML 엘리먼트를 포함하는 경우) 오류일 때 값을, 그렇지 않은 경우 정상일 때 값을 반환. 결과값 둘은 모두 생략 가능하며, 정상일 때 값이 생략된 경우 조건이 정상이면 조건의 결과를 그대로 출력하고, 오류일 때 값을 생략하면 빈 문자열을 반환한다.
#ifexist[편집]
{{#ifexist: 조건 | 참 | 거짓 }}
조건에 문서명을 넣고, 그 문서가 존재하면(≒빨간 링크가 아니면) 참, 존재하지 않으면 거짓을 반환.
파일의 존재 여부는 미디어 이름공간(ns:-2)으로 판정할 수 있다. 파일 이름공간은 로컬의 파일 설명 문서를 나타내는 데에 주의.
#expr[편집]
종류 | 연산자 |
---|---|
묶음 | ( )
|
수 | 1234.5 e (2.718) pi (3.142)
|
이항 연산자 e (지수 표기법), 단항 연산자 + , - (부호)
| |
단항 연산 | not ceil trunc floor abs exp ln sin cos tan acos asin atan
|
이항 연산 | ^
|
* / div mod
| |
+ -
| |
round
| |
논리/비교 | = != <> > < >= <=
|
and
| |
or
|
{{#expr: 수식 }}
수학 연산. zero-padding을 해제(예: 01 → 1)하는 데도 사용. 논리 연산도 가능한데, 값이 0이 아니면 참으로 본다. 논리식이 참일 경우 1, 거짓일 경우 0을 반환. 참과 거짓에 따라 다른 내용을 표시하고 싶다면 #ifexpr을 참조. 수식이 비면 빈 문자열을 반환하고, 수식이 아닌 것(주로 문자열)이 들어있으면 에러를 출력한다.
- {{#expr: 1 and 0 }} → 0
- {{#expr: 1 and -1 }} → 1
- {{#expr: 1>0 and 2=2 }} → 1
#property[편집]
{{#property: P(속성 번호) 혹은 레이블 }}
현재 문서 연결된 위키데이터 항목에서 속성의 값을 가져온다. 레이블보다는 번호로 쓰는 게 부하 감소 측면에서는 바람직. 값이 여럿 있을 경우 값1, 값2, 값3
등으로 반환.