Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Help:Conditional tables

From Wikipedia, the free encyclopedia
This help page is ahow-to guide.
It explains concepts or processes used by the Wikipedia community. It is not one ofWikipedia's policies or guidelines, and may reflect varying levels ofconsensus.

There are three ways to conditionally display or hide rows within a table. All of the methods involve the use of parser conditionals, in particular, the parser#if statement (see the§ Refresher section) to conditionally include or exclude a row, depending on the value of some expression.

Methods

[edit]

CSS display:none property

[edit]

The simplest option is to use the conditional with the CSS "display:none" property:

{|class="wikitable"|-{{#if:{{{variable_foo|}}}|| style="display: none;"}}! Foo|{{{variable_foo}}}|-! Bar|{{{variable_bar}}}|}

The code above is in{{Conditional tables/example 2c}}. The table below demonstrates the effect when it is used:

Template callResult
{{Conditional tables/example 2c|variable_bar=bar}}
Foo{{{variable_foo}}}
Barbar
{{Conditional tables/example 2c|variable_foo=|variable_bar=bar}}
Foo
Barbar
{{Conditional tables/example 2c|variable_foo=foo}}
Foofoo
Bar{{{variable_bar}}}
{{Conditional tables/example 2c|variable_foo=foo|variable_bar=bar}}
Foofoo
Barbar

Pros and cons: with this method, there is no need for the wikitable pipe character to appear in the #if conditional, thus avoiding issues withescaping the vertical bar. However, sources and notes referred to in the hidden cells won't get suppressed with the other contents, so they will continue to be listed at the end of an article without any references to them occurring in the article's text.

HTML tables

[edit]

One method of hiding rows in tables (or other structures within tables) uses HTML directly.[1] In general, there are only a handful of HTML tags you need to be aware of

  • <tr> - this tag creates a new row (similar to|- in MediaWiki table syntax)
  • <th> - this tag creates a new header cell within a row (similar to! in MediaWiki table syntax)
  • <td> - this tag creates a new cell within a row (similar to| in MediaWiki table syntax)
  • <caption> - this tag creates a caption (similar to|+ in MediaWiki table syntax)

A sample HTML table with a conditional row based on testing a template variable with#if follows:

{|class="wikitable"{{#if:{{{variable_foo|}}}|<tr><th>Foo</th><td>{{{variable_foo}}}</td></tr>}}|-! Bar|{{{variable_bar}}}|}

The code above is in{{Conditional tables/example 2a}}. As before, the table below demonstrates the effect when it's used:

Template callResult
{{Conditional tables/example 2a}}
Bar{{{variable_bar}}}
{{Conditional tables/example 2a|variable_foo=}}
Bar{{{variable_bar}}}
{{Conditional tables/example 2a|variable_foo=|variable_bar=bar}}
Barbar
{{Conditional tables/example 2a|variable_foo=value}}
Foovalue
Bar{{{variable_bar}}}
{{Conditional tables/example 2a|variable_foo=value|variable_bar=bar}}
Foovalue
Barbar

Vertical bar escaping

[edit]

Because the parser function#if and MediaWiki table syntaxdo not work together well, the template code described at§ Pitfalls with an illustration of non-working code atExample 2 will not work correctly. The problems there can be rectified by properly escaping the vertical bar.

For most characters, often it's good enough toreplace a problematic characters with the correspondingHTML entities, e.g. "{" by&#123;, "|" by&#124;, and "}" by&#125;.But for Wiki tables a real vertical bar character "|" is required —using&#124; HTML entity does not work.

A simple trick allows to protect the "|" in template parameter values while still arriving as real "|" delimiter in the Wiki table, see themagic word {{!}}. Note that"!" (exclamation mark) has no problems with templates,it's the other delimiter used in Wiki tables.Here's the code for plan B:

{|class="wikitable"{{#if:{{{foo|}}}|{{!}}-! Foo{{!}}{{{foo}}}}}|-! Bar|{{{bar}}}|}

The code above is in{{Conditional tables/example 2b}}. As before, the table below demonstrates the effect when it's used:

Template callResult
{{Conditional tables/example 2b|bar=nobar}}
Barnobar
{{Conditional tables/example 2b|foo=|bar=vbar}}
Barvbar
{{Conditional tables/example 2b|foo=value}}
Foovalue
Bar{{{bar}}}
{{Conditional tables/example 2b|foo=value|bar=vbar}}
Foovalue
Barvbar

Refresher on parser functions

[edit]
Further information:mw:Help:Magic words § Parser functions, andmw:Help:Extension:ParserFunctions

Conditionalparser functions like#if allow for the conditional display of table rows, columns or cells, but they have some limits.

The following example shows a basic use for#if that is available from the extensionParserFunctions:

{{#if:{{{variable_foo|}}}|foo is set to'''{{{variable_foo}}}'''|foo is''blank''}}

Here,{{{variable_foo}}} is checked to see if it is defined with a non-blank value. The table below shows the output from a template call (we'll call the template{{Conditional tables/example 1}}) with different values for{{{variable_foo}}}:

Template callResult
{{Conditional tables/example 1}}foo isblank
{{Conditional tables/example 1|variable_foo=}}foo isblank
{{Conditional tables/example 1|variable_foo=value}}foo is set tovalue

Positional parameters{{{1}}} etc. work like named parameters:

{{#if:{{{1|}}}|1st parameter is'''{{{1}}}'''|1st parameter is''blank''}}
Template callResult
{{Conditional tables/example 1b||bar}}1st parameter isblank
{{Conditional tables/example 1b|foo|bar}}1st parameter isfoo
{{Conditional tables/example 1b|[[m:|not empty]]}}1st parameter isnot empty
{{Conditional tables/example 1b|bad=idea}}1st parameter isblank
{{Conditional tables/example 1b|1=ok=yes}}1st parameter isok=yes

Note how thepipe symbol (vertical bar) in the link works as is, it's not quite that easy within Wiki tables, see below.

Pitfalls

[edit]

Parser functions and table syntax

[edit]

Unfortunately#if and the MediaWiki table syntax do not work together well. For example, the following,{{Conditional tables/example 2}} isinvalid and will not work:

{|class="wikitable"{{#if:{{{variable_foo|}}}||-! Foo|{{{variable_foo}}}}}|-! Bar|{{{variable_bar}}}|}

The table below demonstrates the effect when{{Conditional tables/example 2}} is used:

Template callResult
{{Conditional tables/example 2}}
Foo
Bar{{{variable_bar}}}
{{Conditional tables/example 2|variable_foo=}}
Foo
Bar{{{variable_bar}}}
{{Conditional tables/example 2|variable_foo=|variable_bar=bar}}
Foo
Barbar
{{Conditional tables/example 2|variable_foo=value}}
Bar{{{variable_bar}}}
{{Conditional tables/example 2|variable_foo=value|variable_bar=bar}}
Barbar

The problem is with the usage of the pipe character (|). This character, in template calls, is used to separate parameters and so is invalid.

Getting help

[edit]

If you find yourself unable to get a template to behave how you like, you can try asking onVillage pump, placing a request atRequested templates, or contacting an editor viaIRC.

See also

[edit]

For avoiding blank rows in the case of successive optional rows, seem:Help:Table#Conditional table row.

For more information on#if (and other # functions), see:

The following help topics deal with templates:

This help topic deals with table design (since most templates use tables, this may be useful):

And finally:

Notes and references

[edit]
  1. ^Using HTML table code in templates can make them non-portable to otherMediaWikiwikis. This is because Wikipedia and other Wikimedia Foundation wikis process wikitext throughHTML Tidy; most other wikis do not have the same setup, and the HTML table tags do not render. SeeWikipedia:WikiProject Transwiki#Special templates.
General
technical help
Special
page
-related
Wikitext
Links anddiffs
Media files: images,
videos and sounds
Other graphics
Templates and
Lua modules
Data structure
HTML andCSS
Customisation
and tools
Automated editing
Retrieved from "https://en.wikipedia.org/w/index.php?title=Help:Conditional_tables&oldid=1277884300"
Categories:

[8]ページ先頭

©2009-2025 Movatter.jp