|
|
Line 1: |
Line 1: |
| <!--Categories where indicated at the bottom of this page, please; interwikis at Wikidata (see [[Wikipedia:Wikidata]])-->
| | #REDIRECT [[Template:When on basepage/doc]] |
| | |
| This is the {{tl|When on basepage}} meta-template. It helps other templates detect if they are on a '''basepage''' (i.e. a page whose name matches the pattern "''x'':''x''") '''subpage''' ("''x'':''x''/''x''") or '''subsubpage''' ("''x'':''x''/''x''/''x''").
| |
| | |
| An alternative way to detect whether a page is a subpage is to combine the parser functions <code>#ifeq:</code> and <code>#titleparts</code>. See [[#Alternatives for simpler text|Alternatives for simpler text]] below.
| |
| | |
| == Usage ==
| |
| | |
| : {{tlx|When on basepage |''result if on a basepage'' (|''result if on a subpage'') (|''result if on a subsubpage'') (|page{{=}}''pagename'')}}
| |
| | |
| For example, {{tlf|When on basepage |Basepage |Subpage}} on the page "User:Example" would return: {{When on basepage|Basepage|Subpage|page=User:Example}}<br/>whilst on "User:Example/page" (or "User:Example/page/page", "User:Example/page/page/page", etc.) it would return: {{When on basepage|Basepage|Subpage|page=User:Example/page}}
| |
| | |
| On a subsubpage such as "User:Example/page/page" (or "User:Example/page/page/page", etc.), {{nowrap|{{tlf|When on basepage |Basepage |Subpage |Subsubpage}}}} would return: {{When on basepage |Basepage |Subpage |Subsubpage |page=User:Example/page/page}}
| |
| | |
| Use an empty parameter to specify no action for a particular type of page. {{nowrap|{{tlf|When on basepage |Basepage | |Subsubpage}}}} on "User:Example/page", for example, would return nothing, but would return "Subsubpage" if on "User:Example/page/page", "User:Example/page/page/page", etc. (and "Basepage" if on "User:Example").
| |
| | |
| ===Handling equals-signs ("=")===
| |
| Use numbered parameters if their values include equals-signs ("="), i.e.
| |
| : {{tlf|When on basepage |1{{=}}''basepage result'' (|2{{=}}''subpage result'') (|3{{=}}''subsubpage result'')}}
| |
| | |
| ===''page'' parameter===
| |
| The ''page'' parameter is included for testing/demonstration. For example:
| |
| : {{tlf|When on basepage |(basepage result) |(subpage result) |page{{=}}User:Example/test}}
| |
| Regardless of where the above is placed, it will return: {{When on basepage|(basepage result)|(subpage result)|page=User:Example/test}}<br/>(because "User:Example/test" is a subpage). The page doesn't have to exist.
| |
| | |
| If ''page'' is left empty ({{para|page}}) or undefined, the page where the template is transcluded (i.e. {{tld|PAGENAME}}) is used.
| |
| | |
| ''page'' also accepts variables, e.g. {{nowrap|{{tlf|When on basepage |(basepage result) |(subpage result) |page<nowiki>={{{page|}}}</nowiki> }}}}
| |
| | |
| == Technical note ==
| |
| | |
| This template detects subpages in all namespaces, including those without the [[meta:Link#Subpage feature|MediaWiki subpage feature]] enabled.
| |
| | |
| == Alternatives for simpler text ==
| |
| | |
| A subpage can be detected without using another template, by instead using the title-splitting parser function <code>#titleparts</code> with <code>#ifeq</code>:
| |
| <pre>
| |
| {{#ifeq:{{#titleparts:{{PAGENAME}}|1|1}}|{{PAGENAME}}
| |
| | [...code if on a basepage...]
| |
| | [...code if on a subpage...]
| |
| }}
| |
| </pre>
| |
| For example, many templates can check if the page is a /sandbox version, by the similar markup with <code>#ifeq</code> and <code>#titleparts</code>:
| |
| : <nowiki>{{#ifeq: {{#titleparts:{{PAGENAME}}|1|1}} | {{PAGENAME}}</nowiki>
| |
| :: <nowiki> | {{documentation}}</nowiki>
| |
| :: <nowiki> | {{template sandbox notice}}</nowiki>
| |
| : <nowiki>}}</nowiki>
| |
| That simple logic works because [[Template:Template sandbox notice]] also checks the page name for "/sandbox" before displaying the sandbox notice; otherwise, any other subpage would show no extra text. By avoiding a template, and using a single <code>#ifeq</code>, then the processing uses only +2 expansion depth levels, rather than +7 levels, and avoids "[[wp:exceeded template limits]]" inside a complex /doc page.
| |
| | |
| == See also ==
| |
| * {{tlx|Ns has subpages}}
| |
| {{Namespace and pagename-detecting templates}}
| |
| | |
| <includeonly>{{Sandbox other||
| |
| <!--Categories below this line, please; interwikis at Wikidata-->
| |
| [[Category:Pagename manipulation templates]]
| |
| [[Category:Wikipedia metatemplates]]
| |
| }}</includeonly>
| |