Jump to content

Help:Şablonlar

From mediawiki.org
This page is a translated version of the page Help:Templates and the translation is 40% complete.
Outdated translations are marked like this.
PD Not: Bu sayfayı düzenlerken katkınızı CC0 altında yayınlamayı kabul edersiniz. Daha fazla bilgi için Kamu Malı Yardım Sayfalarına bakın. PD

Birkaç sayfaya eklemek istediğiniz standart metinleriniz varsa, MediaWiki şablon özelliği devreye girer. Uzantılardan ve medya dosyalarından farklı olarak, şablonlar için merkezi bir depo yoktur. Şablonlar yeni yazılabilir veya daha önce yapılmış, başka bir vikiden dışa aktarılan çoğaltma çalışmasını kaydetmek için; Wikipedia ve ardından hedef vikiye aktarılır. Templates can be newly written or, to save duplicating work already done, exported from another wiki e.g. Wikipedia, and then imported into the target wiki.

Basic usage

Şablonlar, içeriği diğer sayfaların içinde yansıtma (gömülü) olacak şekilde tasarlanmış standart viki sayfalarıdır. Şablonlar, adı "Şablon:" ile ön ekli olduğu bir kuralı izleyerek ad alanı; bunun dışında başka bir viki sayfası gibi onları oluşturabilirsin.

To transclude a template, you used double open & close curly brackets {{template name}}.

Şablonların en basit kullanımı aşağıdaki gibidir. İçeriği olan "Şablon:Hoş geldiniz" adlı bir sayfa oluşturursanız:

Merhaba! Vikiye hoş geldiniz.

ilk şablonunuzu oluşturdunuz! Daha sonra kodu girerseniz:

{{Welcome}}

Başka bir sayfada, o sayfa görüntülendiğinde "Merhaba! Vikiye hoş geldiniz." {{Hoş geldin}} şablon içeriği diğer sayfaya "yansıtır", yani sayfaya entegre edilir.

Ardından, birisini kabul etmek istediğiniz herhangi bir sayfanın herhangi bir yerine {{Hoş geldin}} adresini ekleyebilirsiniz. 100 sayfada kullanıldığını varsayalım. Şablon içeriğini daha sonra değiştirirseniz:

Merhaba! Bu güzel vikiye hoş geldiniz.

ve şablonun kullanıldığı 100 sayfadan herhangi birini tekrar ziyaret ederseniz, orijinal metin yerine yeni metni görürsünüz. Bu şekilde, 100 sayfanın içeriğini düzenlemeden değiştirdiniz, çünkü şablon bu sayfalara yansıtmıştır.

Bu temel mekanizmadır. Bu mekanizmayı zenginleştiren ve şablonları çok kullanışlı kılan birkaç ek yansıtma özelliği vardır.

Ways to invoke a template

Şablonlar diğer sayfalarda şu şekillerde kullanılabilir:

  • {{Adı}} — yukarıda açıklandığı gibi, bu bağlantı, şablon bağlantısı olan sayfanın yüklü olduğu zaman, [[Şablon:Adı]]'nı geçerli içeriği ile dinamik olarak değiştirilecektir. Bağlantı, sayfanın kaynağında değişmeden kalacaktır.

Because the template call remains in the pages's source, any subsequent change to Template:Name will be seen on the page containing the template call. Also, the page will be listed among those that "link to" the template.

  • {{subst:Adı}} — bu şablon bağlantısı kullanıldığında, bağlantıya sahip sayfanın kaydedildi tarihinden itibaren bir kez ve herkes için [[Şablon:Adı]] içeriğiyle değiştirilecektir: [[Şablon:Adı]]'nın içeriğinin bir kopyası, şablon bağlantısı için değiştirilmiş olacaktır. İçerik daha sonra dahil edilen sayfanın bir parçasıdır ve orijinalden ayrı olarak normal şekilde düzenlenebilir. Not: kaynak şablon sayfasındaki daha sonra yapılacak değişiklikler, şablon bağlantısının bulunduğu sayfaya yayılmaz.

That is, a copy of the contents of Template:Name will be substituted for the template call. No link is maintained between the page and the template, so each can be edited further without affecting the other. In effect, there is little difference between substituting the content in this way and simply typing it into the page's source "manually". See Yardım:İkame for more information.

See Yardım:İkame for more information.

  • {{msgnw:Adı}} şablonu, onu içeren sayfa getirildiğinde ham viki sözdizimi (‎<nowiki> gibi) olarak görüntüleyen bir forma ekler.

For example, {{msgnw:Template:Thankyou}} displays:

<noinclude> <languages/> </noinclude> '''Küçük bir teşekkür...''' {{{reason|{{{1}}}}}} için. sarılır, {{{signature|{{{2}}}}}} <noinclude> [[Category:Template examples{{#translation:}}|{{PAGENAME}}]] </noinclude>

Aslında, sıradan bir viki sayfası, yalnızca içinde bulunduğu ad alanını belirterek, şablon olarak da kullanılabilir, bu nedenle:

  • {{Şablon:Sayfaadı}}, [[Şablon:Sayfaadı]] dahil eder
  • {{Tartışma:Sayfaadı}}, [[TartışmaSayfaadı]] dahil eder
  • {{:Sayfaadı}}, [[Sayfaadı]] dahil eder
    • {{subst::Sayfaadı}} kendisini [[Sayfaadı]] içeriğiyle değiştirir

Böyle bir ad alanı yoksa, tam başlığın bir şablon olduğu varsayılır:

  • {{Foo:Bar}}, [[Şablon:Foo:Bar]] dahil eder

Regardless of what syntax is used, the name of the template can be relative to the current page For example, if {{/bar}} is called on page foo, it will transclude the page foo/bar.

It can also be generated dynamically. For example, {{ {{foo}} }} calls Template:foo and interprets the result as the name of another template to call.

Parametreler

Kopyalama mekanizmasını zenginleştirmek için MediaWiki, parametrelerin kalıp geçirildiğinde bir şablona geçirilmesine izin verir. Parametreler, şablonun farklı içerikler üretmesine veya farklı davranışlara sahip olmasına izin verir.

Diyelim ki diğer kullanıcıların tartışma sayfasına küçük bir teşekkür notu eklemek istediğinizi varsayalım:


Küçük bir teşekkür... bütün çabalarınız için. sarılır, Ben


Teşekkür notu bir neden (bu durumda, "bütün çabalarınız") ve bir imza ("Ben") olacaktır. Amacınız, herhangi bir kullanıcının herhangi bir nedenle başka bir kullanıcıya teşekkür edebilmesidir.

Notun kullanıldığı her yerde benzer görünmesi için, örneğin Template:Teşekkürler adlı bir şablon tanımlayabilirsiniz. Not, bir kullanıcı başka bir kullanıcıya teşekkür ettiğinde benzer görünmekle birlikte, içeriği (yani nedeni ve imzası) farklı olacaktır. Bu nedenle, bunları parametre olarak iletmelisiniz. Kutuyu biçimlendirmek ve görüntüyü yerleştirmek için kalan öğeleri yoksayarsak, şablonun temel içeriği şu olur:

'''Küçük bir teşekkür...'''
{{{1}}} için.
sarılır, {{{2}}}

{{{1}}} ve {{{2}}} kullanıldığına dikkat edin. Şablonlar içinde, şablon kullanıldığında geçirilecek parametreleri tanımlamanın yolu budur. Şablon içinde, her parametrenin üç parantez içine alındığına dikkat edin: {{{ }}}. Bu normal şablon adı kullanımından farklıdır.

Bir sayfada şablonu kullanırken, bir "dikey çizgi" karakteri (|) ile ayrılmış parametre değerlerini doldurursunuz. MediaWiki, parametrelerin şablona üç şekilde iletilmesine izin verir: Anonim, Numaralı ve Adlandırılmış.

Anonim parametreler

Anonim parametreleri iletmek için, bu parametrelerin değerlerini sırayla listeleyin:

{{Teşekkür|bütün çabalarınız|Ben}}

Bu durumda, {{Teşekkür}} şablonu parametreleri {{{1}}}=bütün çabalarınız ve {{{2}}}=Ben alır, şunu üreten:


Küçük bir teşekkür... bütün çabalarınız için. sarılır, Ben


Anonim parametrelerin aktarılma sırası davranışı için çok önemlidir. Parametrelerin sırasını tersine çevirmek, şöyle:

{{Teşekkür|Ben|bütün çabalarınız}}

bu sonucu üretir:


Küçük bir teşekkür... Ben için. sarılır, bütün çabalarınız


Parametreleri sıraya göre tanımlama ({{{1}}} vb. ile) anonim parametrelerle yalnızca çalışır Aşağıda gösterildiği gibi, adla tanımlanan parametrelere sıra sayıları kullanılarak şablon tarafından erişilemez.
Anonim bir şablon parametresinin bağımsız değişkeninin içinde eşittir işareti görünürse, bu parametre eşittir işaretinden önceki metni parametre adı olarak ele alarak adlandırılmış parametre olarak yanlış yorumlanabilir ve bağımsız değişken değeri olarak sonraki metni. Harici bir bağlantı veya niteliklere sahip bir HTML öğesi eklemeniz gerektiğinde bu yaygın bir sorundur (görev T16235 sayfasına bakın). Çözüm, bunun yerine adlandırılmış parametreleri, hatta aşağıdaki bölümde açıklandığı gibi numaralandırılmış parametreleri kullanmaktır.

Numaralı parametreler

Parametreleri sayıya göre geçirmek için, her parametreyi geçerken tanımlayın:

{{Teşekkür|2=Ben|1=senin arkadaşlığın}}

Bu sefer, {{Teşekkür}} şablonu {{{1}}}=senin arkadaşlığın ve {{{2}}}=Ben parametreleri alır, ancak ters sırada sağlandıklarından ve ürettiklerinden:


Küçük bir teşekkür... senin arkadaşlığın için. sarılır, Ben


Bu numaralandırılmış parametrelerden herhangi biri "=" işareti içerdiğinde de yararlı olabilir.
Örnekler
{{Thankyou|1=“=” eklediği|2=Ben}}

üretir


Küçük bir teşekkür... “=” eklediği için. sarılır, Ben

Uyarı Uyarı: Bu, birbirlerinin parametrelerini numaralandırmayı da gerektirir.

Adlandırılan parametreler

Parametreleri iletmenin üçüncü yolu sayılar yerine ada göre yapılır. Bu durumda, şablon içeriği şu şekilde değiştirilir:

'''Küçük bir teşekkür...'''
{{{sebep}}} için.
sarılır, {{{imza}}}

Şablon içinde, her parametreyi bir sayı yerine tanımlamak için {{{sebep}}} ve {{{imza}}} kullanırız. Bu parametreleri ada göre geçirmek için, geçerken her parametreyi tanımlayın:

{{Teşekkür|imza=Ben|sebep=olduğun kişi olmak}}

Bu durumda, {{Teşekkür}} şablonu {{{sebep}}}=olduğun kişi olmak parametreleri alır ve {{{imza}}}=Ben şunu üretir:


Küçük bir teşekkür... olduğun kişi olmak için. sarılır, Ben


Adlandırılmış parametreler büyük/küçük harfe duyarlıdır, bu nedenle:

{{Teşekkür|imza=Ben|Sebep=olduğun kişi olmak|reason=büyük/küçük harfe duyarlı olma}}

şunu üretir:


Küçük bir teşekkür... büyük/küçük harfe duyarlı olma için. sarılır, Ben


Şablonunuzda adlandırılmış parametreleri kullanmanın avantajı, sıra parametrelerinde geçirilebilen esnekliğin yanı sıra, çok sayıda parametre olup olmadığını anlamak için şablon kodunu daha kolay hale getirmesidir.

Spaces and newlines are automatically stripped from the start and end of named parameter names and values, but are preserved in unnamed parameters.

Mixing named and unnamed parameters

If the template supports it, both kinds of parameters can be used in one call.

For example, {{Thankyou|supporting both parameter types|signature=Me}} results in:


Küçük bir teşekkür... supporting both parameter types için. sarılır, Me


Be careful when doing this, because it can result in conterintuitive results as unnamed parameter counts are based only on the unnamed parameters, not the named parameters. For example, {{Thankyou|Me|reason=supporting both parameter types}} results in:


Küçük bir teşekkür... supporting both parameter types için. sarılır, {{{2}}}


The template is coded to prefer the named parameter for the reason over the unnamed parameter, resulting in the "Me" being lost and no signature being given. This results in a default value of {{{2}}} being shown, as explained below.

Varsayılan değerler

Parametreleri bekleyen ancak bağımsız değişkenlerini bu şekilde sağlamayan bir şablonu aşarsanız:

{{Teşekkür}}

yukarıdaki numaralandırılmış parametreler örneğinde aşağıdakileri elde edersiniz:


Küçük bir teşekkür... {{{1}}} için. sarılır, {{{2}}}


Hiçbir argüman iletilmediğinden, şablon parametreleri kendi değerleri yerine kendileri sunar. Bu durumlarda, parametreler için varsayılan değerlerin, yani herhangi bir değer geçirilmezse kullanılacak değerlerin tanımlanması yararlı olabilir. Örneğin, şablon içeriği şu şekilde değiştirilirse:

'''Küçük bir teşekkür...'''
{{{sebep|her şey}}} için.
sarılır, {{{imza|Ben}}}

sonra {{{sebep|her şey}}}, {{{sebep}}} parametresi için bağımsız değişken sağlanmadıysa, her şey değeri kullanılır. Benzer şekilde {{{imza|Ben}}}, Ben değerini varsayılan {{{imza}}} parametresiyle değiştirir. Şimdi, herhangi bir argüman iletmeden şablonu tekrar transkript etmek aşağıdakileri sağlar:


Küçük bir teşekkür... her şey için. sarılır, Ben


Bir parametrenin değeri boş bir dize olabilir. Örneğin, {{foo|bar=}} veya {{foo|bar=|baz=qux}} içinde foo şablonu bar parametresini "" olarak kabul eder. Bu, parametreyi tamamen atlamaktan farklıdır, bu da onu tanımsız bırakır ve yukarıda açıklanan varsayılan değer mekanizmasını tetikler.
If you need to treat an empty string the same way as a missing parameter, you can use a conditional operator through an extension like ParserFunctions. For instance, {{#if:{{{1|}}}|{{{1|}}}|undefined}} returns undefined if the parameter is either undefined or empty, while {{{1|undefined}}} does so only if the parameter is undefined.

Alternatif parametre adlarını belirtmek için genellikle varsayılan değerler kullanılır. Örneğin, {{{a|{{{b|}}} }}} varsa, şablon önce "a" adlı bir parametre arar. Eğer ayarlanmazsa, "b" adlı parametreyi kullanacaktır. Ne "a" ne de "b" ayarlanmazsa, hiçbir şey çıkmaz.

Passing parameters to other templates

If raw parameter syntax is generated by the above template call, and then passed through to another template, it is not interpreted as a parameter. This means that {{Thankyou2 }}, which just calls {{Teşekkürler }} with no parameters, does not work: {{thankyou2|everything|me}}Küçük bir teşekkür... {{{1}}} için. sarılır, {{{2}}}


You instead need to explicitly pass the parameter to the other template, i.e if {{Thankyou3 }} contains

{{thankyou|{{{1}}}|{{{2}}}}}

then works properly: {{thankyou3|everything|me}}Küçük bir teşekkür... everything için. sarılır, me


This example does not preserve emptiness vs. undefinedness in parameter values - you would need more complicated syntax if you wanted to do that.

Empty vs undefined parameters

The {{t2demo|| a }} (refer to {{T2demo }} ), with a double pipe, sets the first parameter to an empty string instead of leaving it undefined. It produces the output start--middle- a -end, similar to how {{t2demo|1=|2= a }} results in start--middle- a -end. On the other hand, explicitly setting the parameter "2" to "a," results in the first unnamed parameter being left undefined:

{{t2demo|2= a }} results in start-{{{1}}}-middle- a -end

If the second parameter should not be trimmed, it must be unnamed.

Therefore, you can assign an empty string to the first parameter, but you cannot leave it undefined.

Making emptiness and undefinedness equivalent

Good template coding practices result in passing an empty string to a parameter working the same as not assigning any value. This makes things easier and more consistent.

For example, using p= can show that a template has a parameter "p" that doesn't have a value yet.

To make an empty string and an undefined value equivalent, use the following approaches:

  • Use {{{p|}}} exclusively instead of {{{p}}} or q where "q" is a non-empty value.
  • Use conditional checks like {{#if:{{{p|}}}|..{{{p}}}..|..}}, to ensure {{{p}}} is only used when it has a value.

If for some reason you want to treat undefined parameters differently from empty parameters or any other possible value you can compare the same parameter twice with different defaults, i.e {{#ifeq:{{{foo|bar}}}|{{{foo|baz}}}|parameter is defined|parameter is undefined}}.

Using equals signs in unnamed parameters

Unnamed parameters can include equals signs, but this must be done indirectly. Here are some methods using template:T1demo:

Default Value for Undefined Parameter

Assign a default value to an undefined parameter:

{{T1demo|{{{1| a=b }}}}}

This renders as: start a=b end.

Using the {{=}} parser function

Use a parser function that safely includes an equals sign:

{{T1demo| a{{=}}b }}

This renders as: start a=b end.

HTML Entities

Replace the equals sign with an HTML entity for display:

{{T1demo| a=b }}

This renders as: start a=b end.

This renders correctly without affecting the other parameters.

Handling unmatched curly and square brackets

Unmatched curly brackets ({{, }}) or square brackets ([[, ]]) must be inside nowiki tags or use HTML entities:

  • Rendering curly brackets have two options:
    • Use <nowiki>{{</nowiki> or &#123; for {
    • Use <nowiki>}}</nowiki> or &#125; for }.
  • Use &#91; for [ and &#93; for ].

Below are some examples:

Unmatched curly brackets
{{T1demo| <nowiki>{{</nowiki>content<nowiki>}}</nowiki> }}

This correctly renders the braces without breaking the template.

Unmatched square brackets
{{T1demo| text [link] more text }}

This correctly renders the braces without breaking the template.

This renders as: start text [link] more text end

Unmatched pairs not placed in nowiki tags either prevent template expansion or are taken as closing braces for the template call.

Below are some examples:

{{T1demo|abc]]def[[ghi}}

This will not expand correctly because of unmatched brackets.

The correct use:

{{T1demo|abc<nowiki>]]</nowiki>def<nowiki>[[</nowiki>ghi}}

This renders as: startabc]]def[[ghiend

Template-generated brackets

An alternate technique for passing arguments with unmatched brackets is to wrap them in another template

.

In that situation, (which exists with {{(( }} and {{)) }}) on this wiki), the unmatched brackets will be rendered literally, and not decoded as another template call. For example:

{{t1demo|{{((}}t1demo{{))}}}}

results in: start{{t1demo}}end

When substituting a template, template inclusions are parsed once when the subst happens (with the same caveats explained above) and then a second time when rendering the resulting wikitext. For example:

{{subst:((}}t1demo|foo}}

will expand on save to:

{{t1demo|foo}}

which will then render as:

startfooend

If the wikitext generated via the first subst itself includes "subst:" syntax it will not be processed on the same save, but may be on the next save.

This technique may be used to implement recursive substitutions that take multiple saves to evaluate.

Using pipes in parameter values

A parameter value cannot contain a pipe character (|), because it would be interpreted as the end of that parameter and the start of the next parameter.

This can be worked around by using the parser function {{!}}, or the HTML entity &124;. The two methods of doing this have slightly different behavior, which can be relevant in some corner cases like when a template is producing wikitable syntax.

Example: {{T1demo|abc|def}} produces: startabcend

The "def" doesn't display because it is treated as part of another unnamed parameter, which the template does not use.

{{T1demo|abc{{!}}def}} produces: startabc|defend

The "def" displays properly.

{{T1demo|abc&#124;def}} produces: startabc|defend

The "def" displays properly again.

Formatting template calls using extra parameters

Since templates ignore parameters they are passed but do not handle specifically, they can be used as a way of a adding extra whitespace or unused content to the template call.

For example:

{{template name|foo|bar|baz|mumble|quux}}

is equivalent to, assuming the template doesn't recognize SPACEN as a parameter name:

{{template name|SPACE1=
|foo|SPACE2=
|bar|SPACE3=Random stuff
|baz|SPACE4=
   |mumble|SPACE5=
  quux
}}

It is also possible to use the same name for each spacer (often the empty string), but this will populate Category:Pages using duplicate arguments in template calls, which many wikis prefer to keep empty to catch instances of user error.

This can be used to make the template render in a way similar to its output, like showing each row of w:Template:Chess position on its own like to make the wikitext also look like a chessboard.

Tracking parameter usage

Ayrıca bakınız: Help:Tracking categories


It may be wise for a template to add a link or category to a page if a certain parameter or combination of parameters is used, to make if possible to easily determine what pages are using a given parameter, and thus what the impacts of changing that parameter in the template would be.

Değerlendirme

Bu, ihtiyacınız olmadıkça atlayabileceğiniz gelişmiş bir konudur.

Genel olarak konuşursak, şablon parametreleri belirteçleştirmeden sonra şablona değiştirilir, ancak olduğu gibi. Kullanılıncaya kadar değerlendirilmezler.

Bunun birkaç sonucu var.

  1. Her şeyden önce, {{mytemplate içeren Template:Start şablonunuz ve |foo=bar}} içeren Template:End şablonunuz varsa ve bir sayfaya {{start}}{{end}} koyarsanız, mytemplate dahil edilmez, çünkü "|" gibi anahtarlar bir şablon tarafından eklenemez ve özel anlamlarını şablonlarda tutamaz. Bir parametrenin veya şablonun adını kontrol etmek için şablonları kullanmaya devam edebilirsiniz, ancak bir şablon çağrısını birden çok şablon arasında bölemezsiniz.
  2. Bunun ikinci sonucu, ölü kodun ortadan kaldırılmasıdır. {{foo|{{DISPLAYTITLE:Bar}} }} gibi bir şablon çağrısı yaparsanız ve Template:Foo {{{1}}} içermiyorsa, yalnızca gerektiğinde değerlendirildiğinden ve değiştirilecek bir parametre olmadığından, ekran başlığı kullanılmaz, dolayısıyla asla değerlendirilmez. Bu genellikle Extension:ParserFunctions kullanılırken ortaya çıkar ve özellikle kullanıcı diline göre değişen int: sihirli kelimesi ile birlikte kullanıldığında fark edilebilir. This isn't perfect, and in some cases even if the result of expanding a template is not used (because it is part of an if statement condition, for example), the process of evaluating it can still have side effects. For example, any links produced or other templates used will still be added to Special:WhatLinksHere even if they are not displayed.

Template parameters are pass by value, which means a template cannot modify its arguments. Parameters are treated as associative array, and parameter names are evaluated before parameter values. If the same parameter name is given more than once (either as named or unnamed), only the last instace is used, and the page is added to Category:Pages using duplicate arguments in template calls.

subst: veya safesubst: sihirli kelimesiyle başlayan şablon çağrıları, yalnızca tasarruf zamanında gerçekleşen ayrı bir ilk geçişte, ~~~~ ve boru hilesi kullanan bağlantılarla birlikte değerlendirilir. İlk geçiş sırasında değerlendirilemezlerse, subst: çağrıları yoksayılır ve safesubst: normal bir şablon gibi değerlendirilir.

Ayrıştırıcı işlevlerinin, ayrıştırıcı etiketlerinin ve aktarılan özel sayfaların çoğu, ancak tümü değil, şablonlar gibi doğrudan dahil edilmez, bunun yerine bir "şerit işaretçisi" ile değiştirilir. Bu, ayrıştırıcı işlevinin sonucu yerine şerit işaretçisini gördükleri için, uzantılardan padleft: veya benzer işlevler gibi ayrıştırıcı işlevlerle sonuçları değiştiremeyeceğiniz anlamına gelir.

Şablonlarda özyineleme

Kendi başına bir şablon eklemek MediaWiki'yi sonsuz özyinelemeye atmaz. MediaWiki şablonun adı kalın yazıyla özyinelemeyi durduracaktır. Örneğin, Template:Aaaa'nın içeriği a {{Aaaa}} z ise, "a a Template loop detected: Template:Aaaa z z" görüntülenir.

Bu koruma, bir şablonun kendi çağrı bağımsız değişkeni kendi kendine normalleştirdiği potansiyel olarak yararlı bir şablon deyimini engeller. Bu yasak örnekte template:d, {{d|20200311}} veya {{d|y=2020|m=3|d=11}} olarak adlandırılabilir. İlk şekilde çağrılırsa, daha sonra birleşik bir işlem yolunu izleyen ikinci bağımsız değişken yapısıyla (dize ayrıştırıcı işlevleri kullanılarak elde edilir) kendi içine döner.

{{#if:{{{1|}}}|{{d|y={{#sub:{{{1}}}|0|4}}|m={{#sub:{{{1}}}|4|2}}|d={{#sub:{{{1}}}|6|2}}}}|<!-- processing path with arguments y,m,d regardless of original call pattern -->}}

template:d, template:d/2 olarak tekrarlanacak şekilde değiştirilirse ve template:d/2, template:d özdeş el kopyası ise, bu deyim, kendi kendine özyineleme koruması statik olarak değil dinamik olarak çalıştığı için iyi çalışır.

MediaWiki yazılımının kendi kendini özyineleme kuralını gevşetmesi için uygun bir yol, her özyinelemeli çağrının, en fazla bir kez bağımsız değişken sayısı azalmayan yinelenen, önceki tüm etkin çağrılardan ayrı bir bağımsız değişken sayısına sahip olmasını istemek olacaktır. Bu, burada açıklanan gibi yararlı deyimleri esnek bir şekilde etkinleştirirken, sonsuz özyinelemeye karşı güçlü bir garanti sağlayacaktır.

İşleme yolunun karmaşıklığı düşükse, yalnızca bir şablon kullanan basit bir çözüm, her bir çağrı kuralını ayrı bir if/else dalında ele almak ve her durumda işleme yolunun mantığını çoğaltmaktır. İşleme yolu daha karmaşıksa, her bir çağrı yapısı durumu, nihai şablon davranışını sağlayan birleşik bir çağrı yapısına sahip bir uygulama şablonuna yetki verebilir.

Parametrelerdeki tablolar

Since the pipe character (|) and equality sign (=) have different meanings in template calls and wikitables, in order to use table markup in the value of a template parameter one generally needs to "escape" those characters (i.e., protect them from interpretation as template markup) using special sequences:

  • the built-in magic word {{!}} provides an "escaped" version of | since MediaWiki 1.24
  • the built-in magic word {{=}} provides an "escaped" version of = since MediaWiki 1.39

Before the introduction of these magic words, many wikis used templates to accomplish the same things. On such a wiki, the magic words take precendence over the same-named templates.

Example table

A B C
A1 B1 C1
A2 B2 C1

Table code:

{| class=wikitable
!A!!B!!C
|-
|A1||B1||C1
|-
|A2||B2||C1
|}

Escaped table code:

{{{!}} class{{=}}wikitable
!A!!B!!C
{{!}}-
{{!}}A1{{!}}{{!}}B1{{!}}{{!}}C1
{{!}}-
{{!}}A2{{!}}{{!}}B2{{!}}{{!}}C2
{{!}}}

Note that the first left-brace ({) is interpreted as a literal left-brace character because it is immediately followed by the {{!}} magic word. Similarly, the last right-brace (}) is interpreted as a literal right-brace character because it is immediately preceeded by the same magic word. However, in some cases these brace characters do cause problems, so some wikis provide templates for escaping these characters, as well:

  • the template call {{(}} might provide an "escaped" version of {
  • the template call {{)}} might provide an "escaped" version of }

Some wikis go even further and provide other convenience templates like {{(!}} ({|), {{!)}} (|}), {{!!}} (||). On such a wiki, the code can be simplified a bit to this form:

{{(!}} class{{=}}wikitable
!A!!B!!C
{{!}}-
{{!}}A1{{!!}}B1{{!!}}C1
{{!}}-
{{!}}A2{{!!}}B2{{!!}}C2
{{!)}}

Kontrol şablonu dahil etme

Varsayılan olarak, hem doğrudan görüntülendiğinde hem de başka bir sayfaya dahil edildiğinde bir şablonun içeriği bütünüyle görüntülenir. Ancak, $noinclude, $includeonly ve $onlyinclude etiketlerini kullanarak bir şablonun hangi bölümlerinin görüneceğini ve içerileceğini kontrol edebilirsiniz.

The template's page when viewed directly appears exactly as the template would render without any parameters. If the template requires parameters to function properly, this will result in raw wikitext syntax or errors as a result of them being missing.

For example:

  • If a parameter has no default value, it shows as the literal text {{{1}}}, indicating the template needs a parameter.
  • If a parameter has an empty default value (it is written as {{{1|}}}), it displays nothing, which achieves the intended effect but lacks clarity for self-documentation. Using a non-empty default value like {{{1|$1}}} could clarify a parameter's role, especially for templates involving images.
  • If a parameter without a default is passed to the #expr parser function, it results in an error message: "Expression error: unrecognized punctuation character '{'."
  • If a template creates a table, it's helpful for the template page to show the table's structure rather than the wikitext used to make it. To do this, the table syntax isn't enclosed in tags, and each table element includes both ‎<noinclude>...‎</noinclude> and ‎<includeonly>...‎</includeonly> parts where needed.

However, you can control which parts of a template will be seen and included by the use of the ‎<noinclude>, ‎<includeonly> and ‎<onlyinclude> tags.

‎<noinclude> ile ‎</noinclude> arasındaki herhangi bir şey yalnızca şablonun sayfası doğrudan görüntülendiğinde görülür, ancak başka bir sayfaya eklendiğinde görülmez. Bu, şablonu içeren herhangi bir sayfaya yaymak istemediğiniz bir şablona metin veya kod eklemek istediğinizde yararlıdır:

  • Kategori, şablonun kendisini kategorilere ayırırken bağlanır
  • Diller arası bağlantılar diğer dillerde benzer şablonlara
  • Şablonun nasıl kullanılacağı hakkında açıklayıcı metin It's a common pattern on some wikis to use a template like {{Documentation }} to transclude the documentation from a subpage of the template. For example, Template:Void is documented at Template:Void/doc.

Benzer şekilde, ‎<includeonly> ile ‎</includeonly> arasındaki herhangi bir şey işlenir ve yalnızca sayfa eklenirken görüntülenir, ancak şablon sayfası doğrudan görüntülendiğinde gösterilmez ve aşağıdaki gibi durumlarda yararlıdır:

  • Kategorize şablonu içeren sayfalar. Not: bir şablon tarafından bu şekilde uygulanan kategoriler değiştirilirken, bu şablonu içeren sayfaların kategorisi bir süre sonraya kadar güncellenmeyebilir: bu, iş sırası tarafından işlenir. Belirli bir sayfanın yeniden kategorize edilmesini zorlamak için, o sayfayı düzenlemek üzere açın ve değişiklik yapmadan kaydedin.
  • Şablon sayfasını görüntülerken şablon kodunun yürütülmemesini sağlamaktır. Genellikle bunun nedeni parametreleri beklemesidir ve parametresiz yürütülmesinin istenmeyen bir sonucu vardır.

‎<noinclude> ve ‎<includeonly> dışındaki her şey normal şekilde işlenir ve görüntülenir; yani hem şablon sayfası doğrudan görüntülendiğinde hem de şablon başka bir sayfaya dahil edildiğinde. Odak bu iki etiketin içinde var.

‎<onlyinclude> etiketlerinin dışındaki her şey ekleme işleminde atılır. Dahil olarak etiketlenmiş bölümler bile yalnızca içerme olarak etiketlenmedikleri sürece ekleme işleminde atılır. Odak bu etiketin dışında olan şeydir.

For example, if a page like Help:Templates/onlyinclude demo has the wikitext:

abc<onlyinclude>def</onlyinclude>ghi<includeonly>jkl</includeonly>

The result of transcluding it is def.

Bu etiketlerin iç içe yerleştirilmesi de mümkündür.

Üç kısmi ekleme etiketi, işlenen ve oluşturulan öğelerin tüm olası kombinasyonlarını etkinleştirir. Yorumlar da bir rolü doldurur. Inclusion tags are respected when using {{subst:templatename}}, but they are not respected when using {{msgnw:templatename}} as that displays the raw wikitext without any processing.

Section transclusion

To transclude different sections of a template on different pages, you can wrap the content in onlyinclude tags and use an if statement on parameters to select which section.

Consider "Template:Example" with this wikitext:

== Section 1 ==
{{#ifeq:{{{1|1}}}|1|
Content of section one.
}}
{{#ifeq:{{{1|2}}}|2|
== Section 2 ==
Content of section two.
}}

This will render both sections on the example page itself, and allow other pages to transclude the first section with {{example|1}} and the second section with {{example|2}}.

Another approach is to use literal parameter syntax instead:

{{{section1|
== Section 1 ==
Content of section one.
}}}
{{{section2|
== Section 2 ==
Content of section two.
}}}

Transclude the first section with {{example|section2=}} and the second section with {{example|section1=}}. If neither parameter is used, then both sections will display.

A third approach is to use Labeled Section Transclusion.

Şablonları düzenleme

Şablonların etkili olabilmesi için kullanıcıların bunları bulmaları ve nasıl kullanacaklarını öğrenmeleri gerekir.

Bunları bulmak için kullanıcılar şunları yapabilir:

  1. Özel sayfalar > Tüm sayfalar tıklayın
  2. Ad alanı: listesinde, Şablon seçin ve Git tıklayın.

Kullanım bilgileri vermek için şablon sayfasına bunun gibi bir örnek ekleyin:

<noinclude>
== Kullanım ==
Karşılama kullanıcıları:
{{Teşekkür|sebep=senin sebebin|imzan=senin imzan}}
</noinclude>

Ardından, bir düzenleyici şablonu kullanmak için örneği kopyalayıp yapıştırabilir.

While editing a page, a list of all templates used is available under the editing form, in a collapsible section titled "Bu sayfada kullanılan şablonlar:" (also named "Bu önizlemede kullanılan şablonlar:", or "Bu bölümde kullanılan şablonlar:" depending on the context). This list provides a convenient link to the template's page, as well as information about its protection status. Redirected templates are shown in italics, with the redirect target added as a separate list item.

Bir şablona bağlantı verme

Bir şablon sayfası diğer viki sayfalarına benzer şekilde bağlanabilir. Örneğin, Template:Navbar bağlantısı vikikod [[Template:Navbar]] kullanılarak oluşturulur.

Birçok vikide, Template:Tl, şablonu gerçekten transkripsiyon yapmadan transkript etmek için gerekli olan "çift kıvırcık kaşlı ayraçlar" vikikodunu gösterecek şekilde biçimlendirilmiş bir şablona bağlantı sağlamak için kullanılabilir. Örneğin, {{tl|Navbar}} bağlantısını oluşturmak için {{Navbar }} kodu kullanılabilir.

Bu yapı, şablon belgelerinde, yardım sayfalarında ve şablonlara atıfta bulunurken konuşma sayfalarında yaygın olarak kullanılır. Aynı etki, {{[[Template:Navbar|Navbar]]}}, ancak {{Tl }} yaklaşım çok daha az yazmayı içerir. Herhangi bir vikide Tl şablonu, varsa, metni bir "code" ögesinde veya monospace tipte oluşturabilir veya oluşturmayabilir. Değilse (bu vikide olduğu gibi), benzer şekilde adlandırılmış başka bir şablon bunu yapabilir. Örneğin, belgelendirmemizin "Ayrıca bakınız" bölümüne bakın.

Template naming

The name of a template is case-sensitive excluding the first character.

You make redirects for alternate capitalizations. For example, if a template is named "AdminAbbr", you can create a redirect named "Adminabbr". This way, the template can be called with either {{AdminAbbr}} or {{adminabbr}}. If an editor prefers a mix of upper and lower case for clarity, they can use functions like lc or uc. For instance, instead of {{CURRENTINTERNETTIME}}, they could use {{ {{uc:CurrentInternetTime}} }}

Because template names are interpreted in the same way to the names of other pages, underscores are replaced with spaces, and any text after a number sign (what would be a anchor in a standard link) is ignored.

An underscore _ can be alternative to a blank space.

Possible uses of templates

Templates can be used for any situation in which one wants two or more pages to contain identical or similar content that is edited together rather than independently. They can be used to:

  • Provide structured elements on many pages, like infoboxes, maintenance templates, navigational boxes, etc.
  • Perform calculations used as a programming tool on various pages, like w:Template:Sum.
  • Build composite pages that display the content of multiple existing pages together, like w:WP:Village pump (all) which includes content from each section of the village pump. The content of these pages can either be shown individually, or together, but the revision history, watchlist, etc. will only pick up changes to the transcluded pages and the raw wikitext of the composite page itself, not implicit changes to the composite page.
  • Share some content between a few related pages. For example, the list at Help:Preferences#Beta features is duplicated at Beta Features#Current Beta Features. While on MediaWiki.org that is built using Extension:LabeledSectionTransclusion instead, it could have been done using a template.
  • Store content referenced multiple times on the same page, so it only has to be written and calculated once. For example w:Template:Cite Monumentenregister/URL is called twice by w:Template:Cite Monumentenregister in two different places, and using another template means the URL pattern only has to be written once in the base template.
  • Use templates as a programming element to generate a loop: if Template:A calls Template:B 10 times with different parameters, then that crudely simulates a for loop. If Template:B calls Template:C 10 times, then you have a nested loop of 100 calls of Template:C. But keep in mind that it is easy to run into the template limits when using templates as advanced programming constructs, and using Scribunto is generally clearer and easier to follow.

Bir vikiden diğerine kopyalama

It is possible, if allowed by the wiki configuration to transclude templates from other wikis. This configuration setting is disabled on Wikimedia wikis. Otherwise, you need to manually copy the template and its dependencies from the source wiki to the destination wiki to use it.

Şablonlar genellikle CSS veya başka şablonlar gerektirir; Aşağıdaki adımlar çoğu şablon için geçerli olmalıdır.

The steps below should work for most templates.

MediaWiki kodu

Yeni vikide içe aktarma haklarınız varsa (Özellikle içe aktarma):

  1. Orijinal vikide Special:Export gidin ve aşağıdaki tüm gerekli şablonların geçmişini içeren bir .xml dosyası indirin:
    • Büyük metin kutusuna şablonun adını girin, ör. "Şablon:Hoşgeldin". Büyük/küçük harflere ve özel karakterlere özellikle dikkat edin - şablon adı tam olarak doğru değilse, dışa aktarma yine de gerçekleşebilir, ancak .xml dosyası beklenen verilere sahip olmaz.
    • "Şablonları dahil et" kutusunu seçin.
    • "Geçmiş revizyonları almadan yalnızca son sürümü al" kutusunu seçin.
    • "Dışa aktar" tıklayın.
  2. Yeni vikide Special:Import'a gidin ve .xml dosyasını yükleyin.

Yeni vikide içe aktarma haklarınız yoksa:

  1. Orijinal vikiden kopyalamak istediğiniz şablona gidin. Düzenleme sayfasına gidin ve tüm vikimetnini kopyalayın
  2. Yeni vikide kopyaladığınız şablonla aynı ada sahip sayfaya gidin. Kopyaladığınız vikimetnini oluştur/düzenle ve yapıştır'a basın. Her şablonun düzenleme özetinde, ilişkilendirme için orijinal sayfaya bağlantı verin.
  3. Düzenleme penceresindeki orijinal vikide, düzenleme kutusunun altında, "Bu sayfada kullanılan şablonlar" listesine bakın. Listelenen her şablon için bu talimatları izleyin. Ayrıca bu şablonlardan herhangi biri tarafından kullanılan herhangi bir şablon yapın.
  1. On the new wiki, go to the page with the same name as the template you copied. Hit create/edit and paste the wikitext you copied. In the edit summary of each template, link to the original page for attribution.
  1. Back in the original wiki at the edit window, below the edit box, look at the list of "Templates used on this page". For each template listed follow these instructions. Also do that for any template used by any of these templates, and so on.

Bu gerekli tüm kodu kopyalar ve bazı şablonlar için yeterli olur. Yalnızca sayfanın oluşturulmasında ayrıştırılan sayfa ögelerinin dışa aktarıldığını, dolayısıyla belge alt sayfalarının bu işlemin bir parçası olarak dışa aktarılmadığını unutmayın. Çalışmazsa, düzenleme kutusunun altındaki "Bu sayfanın geçerli sürümüne aktarılan sayfalar:" altında listelenen kırmızı bağlantıları da kontrol edin. Bunlar için yukarıdaki adımları da tekrarlayın ve modüllerdeki kodu da kopyalayın.

Şablonu ve tüm bağlantılı şablonlarını diğer vikiden başarıyla içe aktardıktan sonra, vikinize uyacak şekilde özelleştirmeleri değiştirmek için düzenleyin. Örneğin, bir logoyu değiştirmek için gereksiz kategorileri veya kırmızı bağlantıları kaldırın.

Uzantılar

Şablonlarda sıklıkla kullanılan bir uzantı ParserFunctions'dır. ParserFunctions sayfasını ziyaret edin ve orada listelenen işlevlerden herhangi birinin kopyaladığınız şablonlarda kullanılıp kullanılmadığını kontrol edin. Öyleyse, ParserFunctions uzantısını yüklemeniz gerekir. Yüklemek için, MediaWiki kurulumunuzun sunucusuna sistem yöneticisi erişimine ihtiyacınız olacaktır.

Şablonlarda, özellikle Wikipedia'da kullanılabilecek bir başka bağımlılık da Lua. Şablon kodunda {{#invoke: }} yapmak bunun için iyi bir işarettir. Kullanılması durumunda, Scribunto uzantısını yüklemeniz gerekir ve sistem yöneticisi erişimi de gereklidir. Uzantıyı yükleme ve kullanma hakkında daha fazla talimat için bu sayfaya bakın.

CSS ve JavaScript kodu

MediaWiki kodunun yanı sıra, birçok şablon CSS'den yararlanır ve bazıları tam olarak çalışması için JavaScript'e güvenir. Kopyalanan şablonlar beklendiği gibi davranmıyorsa, nedeni bu olabilir. Gerekli CSS ve JavaScript'i vikinize kopyalamak için normalde yönetici ayrıcalıklarına sahip olmanız gerekir, çünkü "MediaWiki:" ad alanında sistem mesajlarını düzenleyeceksiniz.

  1. Şablon metninde CSS sınıflarının (class="foobar" gibi metin) kullanımını arayın. Bu sınıflar orijinal vikideki "MediaWiki:Common.css" veya "MediaWiki:Monobook.css" klasörlerinde görünüyorsa, bu sınıfları yeni vikideki "MediaWiki:Common.css" klasörüne kopyalayın ve şablonun şimdi iyi olup olmadığını kontrol edin.
  2. Kopyalanan şablon hala beklendiği gibi çalışmıyorsa, orijinal vikide "MediaWiki:Common.js" veya "MediaWiki:Monobook.js" de kod olup olmadığını kontrol edin. Öyleyse, yeni vikide "MediaWiki:Common.js" dosyasına kopyalamayı deneyebilirsiniz. Normalde, yalnızca güvenilir kaynaklardan kod kopyalamak ve önce ilgili parçaları tanımlamak ve seçmek için koda göz atmak iyi bir fikirdir. Her parçanın işlevselliğini tanımlamak için ipucu olabilecek yorumları bulabilirsiniz.

Redirection

If a page uses a redirect as a template, the redirect is resolved before processing the template and the target is used instead. This won't work if the target doesn't exist (a broken redirect), or is itself a redirect (a double redirect).

A page that just includes another page as a template might look like a redirect, but there are several differences between them:

  • The header of the result displays the title of the page it came from.
  • No "Redirected from" message is shown.
  • Buttons like edit, watch, talk, history, "what links here," and "last modified" point to the referring page. To access the target page, use a section edit link and navigate from there.
  • Unless includeonly and/or noinclude tags are used, the referring page shares the same categories as the target page.
  • "Double redirects" work when one or both are this type of pseudo-redirect.
Embedding works on pages that support redirects and doesn't work on pages without it.

Parser functions

MediaWiki also supports parser functions, which function similarly to templates but follow slightly different syntax:

  • Parser functions utilize a ":" instead of the initial "|".
  • An edit page does not display parser functions used on that page.
  • There is no "What links here" feature for parser functions to identify the pages where they are utilized.
  • Parser functions templates do not generally accept named parameters, so equal signs generally have no special significance. For example:
{{ #if: not blank | x=abc }} gives x=abc

Ayrıca bakınız

Genel şablon kullanımı

Şablonlarda kullanılan özel yapılar

Diğer ilgili bilgiler

Dış bağlantılar