도와 주세요.:치환
Help![]() |
대체는 편집자가 페이지를 저장할 때 Wiki 코드의 항목이 현재 값으로 영구적으로 대체되는 기능입니다.특히, 템플릿과 마법 단어는 트랜스클루전의 대안으로 대체될 수 있습니다.차이점은 템플릿이 페이지에서 대체될 때, 해당 페이지의 모양은 더 이상 템플릿 자체에 대한 이후의 변경사항의 영향을 받지 않습니다(트랜스클립티드 템플릿의 경우).
대체는 다음을 사용하여 수행됩니다.subst:
이중 개방 가새 뒤에 있는 수식자.예를 들어 템플릿 {afd}을(를) 대체하려면 다음과 같이 입력합니다.{{subst:afd}}
"변경사항 표시"를 눌러 저장하기 전에 결과 Wiki 텍스트를 확인할 수 있습니다("미리 보기"를 눌러 페이지가 어떻게 표시되는지 확인).
변수와 파서 함수를 대체할 수도 있습니다. 즉, 변수와 파서 함수의 현재 값은 페이지에 영구적으로 기록됩니다. 다른 사용자가 페이지를 볼 때마다 재평가되지 않습니다.
대체 사용 시기
일반적으로 템플릿은 대체되지 않고 변환되지만, 일부 템플릿은 대체되도록 특별히 설계된 것도 있습니다(변환되면 작동하지 않을 수도 있습니다).템플릿을 대체하는 몇 가지 이유는 다음과 같습니다.
- 결과 페이지를 템플릿의 향후 변경과 무관하게 만들기
- 다른 자동 대체가 발생할 수 있음(예: 템플릿에 4개의 타일이 포함될 수 있음)(템플릿이 대체된 경우 사용자 서명 및 타임스탬프로 대체됨)
- 템플릿을 복사하지 않고 페이지를 다른 프로젝트로 복사할 수 있도록 설정
- 서버의 페이지 렌더링 속도 향상
- 위키텍스트와 렌더링된 페이지 간의 대응 관계를 이해하기 쉽게 만들기(그 반대도 적용될 수 있음)
대체의 단점은 다음과 같습니다.
- 템플릿에 대한 업데이트는 대상 페이지에 반영되지 않습니다.
- 결과적으로 나타나는 위키 텍스트는 더 길고 복잡합니다.
- 다른 사용자는 텍스트가 템플릿을 사용하여 생성되었는지 확인할 수 없으며 템플릿 사용 방법을 배울 수 없습니다.
- 많은 템플릿은 다음과 같은 숨겨진 주석을 추가합니다.
<!-- Template:Foo -->
이 문제를 완화하기 위해 출력의 끝까지.
- 많은 템플릿은 다음과 같은 숨겨진 주석을 추가합니다.
시간 종속 변수는 렌더링된 페이지를 보는 시간과 독립적으로 만들기 위해 대체됩니다.페이지 종속 변수를 대체하면 결과 위키 텍스트는 페이지 이름 변경 및 다른 페이지로 복사와 무관합니다.
대체해야 하거나 대체해서는 안 되는 템플릿 목록을 포함한 자세한 지침은 위키백과를 참조하십시오.대체.
구문
템플릿을 대체하려면 트랜스클루전과 동일한 구문을 사용하지만 다음을 포함합니다.subst:
이중 교정기를 연 후에.예를 들어 템플릿 {afd}을(를) 대체하려면 다음과 같이 입력합니다.{{subst:afd}}
예를 들어, 매개변수는 트랜스클루전의 경우와 같이 포함될 수 있습니다.{{subst:afd Some article}}
.
템플릿 네임스페이스에 없는 페이지도 대체할 수 있습니다.{{subst:User:Cleverclogs/My box}}
메인스페이스에 있는 페이지의 현재 내용(즉, 네임스페이스 접두사가 없는 페이지)을 대체하려면, 다음과 같이 두 개의 콜론이 필요합니다.{{subst::Page}}
대체된 페이지 또는 템플릿이 없는 경우 전체 식(괄호 및 하위:)은 위키 텍스트와 페이지에서 변경되지 않은 상태로 유지됩니다.
변수와 파서 함수를 대체하는 데 동일한 구문을 사용합니다.{{subst:PAGENAME}}
또는{{subst:#switch:{{NUMBEROFADMINS}} 1=Foo 1000=Bar #default=Baz}}
.
여는 중괄호와 "subst:" 사이에 공백이 있을 수 있습니다.그러나 "subst:" 바로 뒤에 공백이나 줄을 두지 않는 것이 좋습니다. 이것이 모든 경우에 효과적인 것은 아니기 때문입니다.
기술 구현
대체는 페이지를 저장할 때 수행되는 프로세스의 일부이며, 편집 결과로 저장된 위키 텍스트가 사용자가 편집 창에 실제로 입력한 텍스트와 다릅니다.이 프로세스 중에 수행되는 다른 대체 작업에는 파이프 트릭을 사용하여 링크를 확장하고 여러 타일을 서명 및 타임스탬프로 교체하는 작업이 포함됩니다.
이는 페이지 렌더링 시 수행되는 작업(저장된 위키 텍스트를 HTML로 변환) 전에 대체가 수행되어야 함을 의미합니다. 특히, 대체는 결론 이전에 수행됩니다.그래서 타이핑.{{subst:Help:L{{in(tut)}}k}}
{{in(tut)}}: 텍스트 "in"을 반환하고 도움말:링크가 존재합니다.대체를 시도할 때 {{in(tut)}}의 트랜스클로즈가 아직 발생하지 않았습니다.그러나 대체{{in(tut)}}
와 함께{{subst:in(tut)}}
그리고 두 치환 모두 예상되는 순서로 수행됩니다.
마찬가지로:
- 타자 치기
{{subst:#if:{{x0}} yes no}}
조건 매개 변수가 비어 있지 않은 문자열 "{{x0}}"로 평가되기 때문에 {{x0}}이(가) 빈 템플릿일지라도 위키 텍스트 "예"를 제공합니다.하지만{{subst:#if:{{subst:x0}} yes no}}
내부 치환이 먼저 수행되므로 "아니오"가 생성됩니다. - 타자 치기
{{subst:#expr:2*{{{p 3}}}}}
식 오류를 반환합니다. 대체가 발생할 때 정의되지 않은 매개 변수 {{p}}이(가) 기본값(3)으로 대체되지 않았기 때문에 인식할 수 없는 구두점 문자 "{"가 반환됩니다. - {{t6}}에 "t2a"라는 텍스트가 포함된 경우,
{{ {{subst:t6}} }}
[[w:이름별 사용자 목록:a{{2}}a{{2}}]]로 렌더링된 위키 텍스트 "{{t2a}}"을 생성합니다. 이를 의 동작과 대조합니다.{{ {{t6}} }}
파서가 파이프를 비분산 확장 단계에서 분리기로 재해석하지 않기 때문에, 이는 "{t2a}}"로 렌더링됩니다.(비슷하게,{{subst:{{subst:t6}} }}
위키 텍스트 제공{{subst:t2 a }}
다음 편집 시에만 [w:이름별 사용자 목록:a{{2}}a{{2}}a{{2}}]로 대체됩니다.)
편집 중에 "변경사항 표시" 단추를 누르면 대체 및 기타 즉시 대체가 수행된 후 발생하는 위키 텍스트가 표시됩니다.미리보기 표시를 누르면 이러한 대체 후 렌더링된 페이지의 모양이 표시됩니다.
페이지가 자신을 대체하는 경우(예: 템플릿 페이지의 no include 부분에서), 현재 편집 전과 마찬가지로 이전 버전을 대체합니다.
대체 템플릿의 확장 자체에 의 인스턴스가 포함된 경우subst:
그런 다음 대체가 재귀적으로 수행됩니다.그러나 대체는 자동으로 재귀적이지 않습니다. 대체된 템플릿에 명시적으로 대체되지 않은 일반적인 결론이나 변수 및 파서 함수가 포함되어 있으면 이러한 변수는 대체되지 않습니다.
참고로 만약의 경우.subst:
구문이 변환 중인 템플릿에 나타나면 변경되지 않은 상태로 렌더링됩니다("{proxy:...}})). 렌더링 단계에서는 위키텍스트를 대체할 수 없기 때문입니다.이 기능을 이용하여 템플릿 동작을 제어할 수 있습니다( § 템플릿을 변환하거나 대체할 때 다르게 동작하게 만들기 참조).그러나 이 경우 템플릿을 대체할 뿐만 아니라 트랜스크루드가 가능하도록 설계된 경우에는 불편할 수 있습니다.safesubst:
대신 사용할 수 있습니다.subst:
(§ 안전한 부분: 수식어 참조).
안전한 대체물: 수식어
그subst:
수식어는 대체 수식어로 대체할 수 있습니다.safesubst:
템플릿의 대체되지 않은 확장(횡단 또는 직접 보기) 중에 발생하는 경우를 제외하고 두 개의 동작은 동일합니다.그런 상황에서, 코드는{{subst:...}}
분석되지 않은 채로 남아 있는 반면,{{safesubst:...}}
수식어가 없는 것처럼 처리되므로 하위 템플릿이 제외되거나 변수 또는 파서 함수가 평가됩니다.
그러므로safesubst:
수식어는 대체될 때 재귀적인 대체를 생성하도록 설계된 템플릿 코드에 사용되지만, 전사되거나 단순히 직접 보기 위해 작동하기도 합니다.를 사용하는 것과 대조적입니다.subst:
수식어, 이러한 템플릿은 이러한 트랜스클루전(그리고 아마도 직접 보기)의 경우에 손상될 것입니다.
이를 구현하는 방법(특히 템플릿 코드가 저장되는 즉시 대체가 수행되지 않도록 방지하는 방법)에 대한 자세한 내용은 § 재귀 대체를 참조하십시오.
재귀 치환
위에서 언급한 바와 같이 대체는 자동으로 재귀적이지 않습니다.따라서 대체된 템플릿에 다른 템플릿 및 파서 함수의 변환이 포함된 코드가 있는 경우 해당 코드는 "있는 그대로" 결과로 생성된 위키 텍스트에 복사되며, 변환된 항목 자체는 대체되지 않습니다.
대체가 반복적으로 작동하도록 하려면 다음을 포함해야 합니다.subst:
호출 템플릿의 코드에 구문이 있습니다.그러나 템플릿을 저장하는 즉시 대체가 수행되므로 템플릿 내에 "subst:"를 입력하여 이 작업을 수행할 수는 없습니다.이 문제를 해결하는 두 가지 방법이 있습니다.
- 사용하다
subst:<noinclude/>
평이한 대신에subst:
no include 태그는 템플릿을 저장할 때 대체 구문을 분할하지만 나중에 대체할 때 제거되므로 내부 대체가 적용될 수 있습니다.또는 템플릿 코드의 더 큰 부분을 랩핑할 수 있습니다.<onlyinclude>...</onlyinclude>
그런 다음 래핑된 코드는 템플릿 페이지 자체에서 무시되지만 변환되지 않을 때는 무시되지 않습니다. - 다음과 같은 매개 변수를 포함하는 식의 가능한 값을 "subst:"로 만듭니다.
{{{subst-foo subst:}}}
매개 변수 sub-foo가 설정되지 않은 경우 "sub:"로 평가됩니다.매개 변수를 통해 동작을 제어할 수 있기 때문에 보다 유연한 솔루션입니다.예를 들어, 이러한 템플릿은 다음을 사용하여 호출할 수 있습니다.{{subst:Templatename subst-foo= ..}}
매개 변수에 빈 값을 할당하여 두 번째 대체 수준을 해제합니다.매개 변수를 사용할 계획이 없는 경우 매개 변수 이름은 종종 빈 문자열로 선택됩니다.{{{ subst:}}}
.
템플릿이 대체되지 않고 제외된 경우에도 의도한 대로 작동하도록 하려면 대신 를 사용합니다.이는 템플릿을 자체 페이지에서도 직접 보려는 경우에도 적용됩니다(이 경우 위의 방법 중 첫 번째 방법을 사용하는 경우에도 일반 하위:는 계속 작동합니다. 포함만 태그를 사용하면 파서가 하위:를 직접 볼 때 무시하기 때문입니다.
모든 하위 템플릿 등을 명시적으로 대체할 필요 없이 완전히 확장했을 때 생성되는 템플릿을 확인하려면 특수:템플릿 확장 도구를 사용할 수 있습니다.
자세한 내용은 메타에서 위키 텍스트의 재귀 변환 도움말 페이지를 참조하십시오.도움말 참조:계산 § 치환, m:템플릿:계산, 대체 옵션(백링크 편집) 및 하위 스톨의 피쳐 요청이 있는 예제 테이블.
가이드 투어에서의 재귀적 대체
가이드 투어는 위키 페이지의 내용을 토크 페이지에 자동으로 게시하는 등 사용자를 대신하여 게시물을 만들 수 있습니다.그러나, 일반적인 대체 또는 트랜스클루전과 달리, 가이드 투어의 이러한 기능은<includeonly>...</includeonly>
마크업과 유사합니다.안내된 둘러보기 게시를 통해 재귀적 대체가 작동하도록 하려면 메타에 설명된 Delaying Template:ubst 메서드를 사용할 수 있습니다.
재귀 활동의 예
다음은 실제 템플릿을 사용한 예입니다.유사한, 그리고 가상의 템플릿:Foo. 템플릿을 포함하려고 합니다.Foo 및 간접적으로 템플릿:예를 들어, 세 번째 페이지에서 결론과 대체를 통해.템플릿:좋아요는 다음 기호를 표시합니다. 좋아요
예를 들어, 템플릿을 예로 들어 보겠습니다.Foo는 위키텍스트를 포함했습니다.{{Like}}
만약 당신이 그것을 배제한다면, 위키텍스트를 사용하세요.{{Foo}}
템플릿을 제외합니다.당신이 예상하는 것처럼.하지만 만약 당신이 위키텍스트를 사용한다면,{{subst:Foo}}
저장하면 위키텍스트를 찾을 수 있습니다.{{Like}}
페이지의 위키 텍스트가 아닌 대체됨 템플릿:예를 들어, 대체가 재귀적이지 않습니다.
재귀의 예로는 템플릿이 다음과 같은 경우가 있습니다.Foo는 위키텍스트를 포함했습니다.{{{{{ safesubst:}}}Like}}
이제 그것을 배제한다면, 위키텍스트를 사용하여{{Foo}}
템플릿을 제외합니다.예전처럼.그리고 당신이 저장한다면,{{subst:Foo}}
템플릿의 전체 실제 위키 텍스트를 대체합니다.좋아요. 따라서 재귀적 대체를 달성했습니다.
추가 예제
참고: {{!…의 대용품
템플릿의 위키텍스트: Foo | 템플릿을 볼 때:푸, 다음과 같이 표시됩니다. | {{Foo}} 결과 이 페이지에 포함된 경우 | {{subst:Foo}} 결과 이 페이지에 포함된 경우 | ||
---|---|---|---|---|---|
다음과 같이 저장: | 렌더링 형식: | 다음과 같이 저장: | 렌더링 형식: | ||
{{PAGENAME}}{#if:1 yes no}} | 푸 네. | {{Foo}} | 치환 네. | {{PAGENAME}}{#if:1 yes no}} | 치환 네. |
하위 항목:{{{하위}:}}}}PAGENAME}}{{{subst:}}}#if: 1 yes no} | {{filename:!}} {{filename}:PAGENAME}} {{filename:#if:1 yes no}} | {{Foo}} | {{filename:!}} {{filename}:PAGENAME}} {{filename:#if:1 yes no}} | 대체 예 | 치환 네. |
안전 물질:{{{{안전한 물질:}}}}PAGENAME}}{{{safesubst:}}}#if: 1 yes no} | 푸 네. | {{Foo}} | 치환 네. | 대체 예 | 치환 네. |
템플릿을 제외하거나 대체할 때 다르게 동작하도록 설정
때때로 템플릿을 변환할 때보다 대체할 때 다르게 동작하는 것이 바람직합니다.일반적인 방법은 다음과 같은 표현을 사용하는 것입니다.{{{{{subst subst:}}}ns:0}}
이 값은 템플릿이 대체되는 경우(내부 대체가 적용되므로 네임스페이스 0의 접두사가 비어 있음) 빈 문자열로 평가되지만 템플릿이 트랜스클리어된 경우(트랜스클리어 후에 대체가 수행될 수 없으므로) "{subst:ns:0}}"로 평가됩니다.
일반적인 응용 프로그램은 대체할 수 있도록 설계된 템플릿에 있습니다. 템플릿을 사용하여 잘못 변환된 경우 경고를 생성할 수 있습니다.이 작업은 타임스탬프(예: 날짜가 지정된 범주에 페이지 추가)를 생성하도록 설계된 {prod}과(와) 같은 템플릿에서 수행되며, 제외된 경우에는 수행할 수 없습니다.
이를 단순화하기 위해 {issubst} 템플릿이 생성되었습니다.대체가 수행 중이면 "예"를 반환하고, 그렇지 않으면 빈 문자열을 반환합니다.그런 다음 이 매개 변수를 조건부 파서 함수의 매개 변수로 사용하여 템플릿이 제외되는 경우 경고 메서드를 표시하도록 하거나, 그렇지 않으면 템플릿이 제외되는지 또는 대체되는지 여부에 따라 템플릿의 동작을 변경할 수 있습니다.
대체 문서화
템플릿 사용 기간:subst:
페이지 기록에 자동으로 표시되지 않습니다.따라서 편집 요약에서 "subst:"를 포함하는 위키 텍스트 행을 제공하는 것이 특히 유용합니다.
또한 대체 템플릿이 있는 페이지는 백링크에 표시되지 않으며, 편집 페이지의 변환된 템플릿 목록에 템플릿이 표시되지 않습니다.템플리트는 대체를 추적하기 위해 카테고리에 페이지를 추가할 수 있지만, 페이지에 이 카테고리를 나열하면 페이지가 있는 내용 기반 카테고리 목록이 복잡해질 수 있습니다.또한 no 이외의 주석은 태그를 포함하지 않습니다.따라서 주석을 사용하여 템플릿을 언급할 수 있습니다.매개 변수의 대체는 주석 내에서 작동하지 않지만, 이에 대한 해결 방법은 의도된 주석을 시작하는 것입니다.<!<noinclude />--
한 번 제외되면 댓글로 바뀌게 됩니다.
한계
내부에서는 대체 기능을 사용할 수 없습니다.<ref>...</ref>
그리고.<gallery>...</gallery>
태그. 글을 쓰시면.{{subst:foo}}
대체되거나 제외되지 않고 그대로 유지됩니다(알려진 버그입니다. 현재 상태는 T4700 및 Gerrit:272916 참조).
그러나 마법 단어 #tag를 사용하여 이 제한을 우회할 수 있습니다.예를 들어, 당신이 글을 쓴다면,{{safesubst:#tag:ref content of the reference}}
참조의 내용은 대체될 것이고 그리고.{{#tag:ref ...}}
로 대체됩니다.<ref>...</ref>
보다 구체적인 예:예를 들어 글을 쓴다면,{{safesubst:#tag:ref ...Title=ExampleTitle archivedate={{subst:TODAY}} Edition=Hardcover...}}
그러면 소프트웨어는 마지막 필드 내의 텍스트에 대한 대체를 수행합니다.{{#tag:ref ...}}
로 대체됩니다.<ref>...</ref>
변경된 텍스트 주위에, 그리고 참조는 대체와 함께 저장됩니다; 그것은 "로 저장됩니다.{{ ...Title=ExampleTitle archivedate=29 January 2016 Edition=Hardcover ...}}
와 함께<ref>...</ref>
주위에즉, 먼저 소프트웨어가 템플릿을 확장한 다음 확장된 텍스트를 참조 태그 내에 배치합니다.
대체할 템플릿
- {{public subst}}은(는) 하위 항목이 필요한 템플릿을 포장할 수 있습니다
- {{issubst}} - 대체 시 "예"를 반환합니다.
- {{ifsubst}} - #if와 유사: 마법 단어, 치환 여부로 판단
참고 항목
- 더미 대용품
- m:도움말:대체, 메타에서 더 길고 더 기술적인 도움말 페이지
- mw:도움말:템플릿 펼치기
- mw:도움말:템플릿 데이터
- bugzilla:2003 – "bugzilla:" 없이 대체된 템플릿으로 표시할 수 있는 기능 요청
- "subst:"를 가진 호출을 포함하고 업데이트된 정보로 유사한 호출을 생성하는 템플릿으로, 이전 정보를 바꾸거나 추가합니다.
- 위키프로젝트 위키백과 확인 » 템플릿 프로그래밍 요소는 템플릿이 [dead link]전사되지 않고 대체된 기사를 나열합니다.(Wayback Machine에 따르면 이 링크가 마지막으로 작동한 것은 2010년 5월이었습니다. 그 이후로 제거된 것으로 보입니다. 이 도구 페이지를 통해 문서를 복사하지 않고 대체할 문서를 찾는 데 도움이 될 수도 있습니다.)