模組:Template wrapper/doc

这是Module:Template wrapper的文档页面
![]() | 此頁面是Module:Template wrapper的模块文档。 此頁面可能包含了模板的使用說明、分類和其他内容。 |
![]() | 此模块文档被引用於約78,000個頁面。 為了避免造成大規模的影響,所有對此模块文档的編輯應先於沙盒或測試樣例上測試。 測試後無誤的版本可以一次性地加入此模块文档中,但是修改前請務必於討論頁發起討論。 模板引用數量會自動更新。 |
本模块用于将模板封装,以提供默认参数值,并允许编者向底层工作模板传递额外参数。
When writing a wrapper template, give this module all of the normally required default parameters necessary to use the wrapper template in its base form. Editors then use the wrapper template as-is or may supply additional wrapper and canonical parameters. Any of the canonical parameters supported by the working template may be added to the wrapper template or supplied by editors in article space. When an editor supplies a parameter that has a default value in the wrapper template, the editor-supplied value overrides the default. When it is necessary to remove a default parameter, editors may set the parameter value to the special keyword unset
which will cause this wrapper module to erase the wrapper template's default value for that parameter. This module discards empty named parameters.
Positional parameters are not normally passed on to the working template. Setting |_include-positional=yes
will pass all positional parameters to the working template. Positional parameters cannot be excluded; positional parameters may be unset
.
Parameters that are used only by the wrapper should be either positional ({{{n}}}) or listed in |_exclude=
(a comma-separated list of named parameters). This module will not pass _excluded
parameters to the working template.
用法
{{#invoke:Template wrapper|wrap|_template=working template|_exclude=named parameter, named parameter, ...|_reuse=named parameter, named parameter, ...|_alias-map=alias parameter:canonical parameter|_include-positional=yes|<default parameter>|<default parameter>|...}}
- 控制参数
|_template=
– (required) the name, without namespace, of the working template (the template that is wrapped); see §_template below|_exclude=
– comma-separated list of parameter names used by the wrapper template that are not to be passed to the working template; see §_exclude below|_reuse=
– comma-separated list of canonical names that have meaning to both the wrapper template and to the working template; see §_reuse below|_alias-map=
– comma-separated list of wrapper-template parameter names that are to be treated as aliases of specified working template canonical parameters; see §_alias-map below|_include-positional=
– pass all positional parameters to the working template; see §_include-positional below
- 定义
- 规范参数(canonical parameter):工作模板支持和使用的参数
- 封装参数(wrapper parameter):封装模板使用的参数;可为规范参数提供数据,或用于控制封装模板
- 别名参数(alias parameter):对封装模板具有上下文意义的封装参数,但必须重命名为规范参数以供工作模板使用
- 复用参数(reused parameter):由封装模板和工作模板共用且已被封装模板修改的参数
- 默认参数(default parameter)在封装模板中给出默认值的规范参数
封装模板 (wrapper template) |
Module:Template wrapper | 工作模板 (working template) | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|canonical parameters= |
→ | –––––––→ | → | –––––––→ | → | –––––––→ | → | –––––––→ | → | –––––––→ | → | filter exclued parameters |
working template | |
|wrapper parameters= |
→ | –––––––→ | → | –––––––→ | → | –––––––→ | → | –––––––→ | → | –––––––→ | → | |||
|_exclude= |
→ | –––––––→ | → | –––––––→ | → | –––––––→ | → | –––––––→ | → | → | ||||
|_include-positional= |
→ | –––––––→ | → | –––––––→ | → | –––––––→ | → | –––––––→ | → | |||||
|_alias-map= |
→ | 转换别名参数 为规范参数 |
→ | |canonical parameters= |
→ | –––––––→ | → | –––––––→ | → | → | ||||
→ | → | 修改复用的 规范参数 | ||||||||||||
|alias parameters= |
→ | –––––––→ | → | → | |reused parameters= |
→ | –––→ | → | ||||||
|_reuse= |
→ | –––––––→ | → | –––––––→ | → | |||||||||
|canonical parameters= |
→ | –––––––→ | → | –––––––→ | → | –––––––→ | → | |||||||
|default parameters= |
→ | –––––––→ | → | –––––––→ | → | –––––––→ | → | –––––––→ | → | –––→ | → |
参数
_template
唯一必需的参数,|_template=
提供工作模板(被包装的模板)的名称(不带“Template:”命名空间前缀)。
_alias-map
|_alias-map=
:封装参数至规范参数的映射列表,使用逗号分隔,作用是指定工作模板规范参数的别名。每项映射格式如下:
<from>:<to>
– 其中<from>
是封装模板的参数名,<to>
是规范参数名
例如封装模板中要使用|assessor=
参数,在工作模板中没有|assessor=
参数,但有等效的|author=
参数,这时可写为:
|_alias-map=assessor:author
匿名参数也可以映射为规范参数:
|_alias-map=1:author, 2:title, 3:language
可以使用#
枚举符将封装参数枚举映射至规范参数:
|_alias-map=assessor#:author#
多个封装参数可以映射到一个规范参数:
|_alias-map=1:author, assessor:author
Wrapper parameters listed in |alias-map=
are not passed to the working template. Mapping positional parameters when |_include-positional=yes
may give undesirable results. |_alias-map=1:author
and |_include-positional=yes
will cause all other positional parameters to be passed to the working template as is: wrapper template {{{2}}}
becomes working template {{{2}}}
, etc; working template will not get {{{1}}}
though it will get |author=
.
_reuse
|_reuse=
规范参数列表,使用逗号分隔,这些参数对封装模板和工作模板都有意义。
In the simplest cases, a canonical parameter passed into the wrapper template overrides a default parameter provided in the wrapper template. Sometimes a wrapper parameter is the same as a canonical parameter and the wrapper template needs to modify the parameter value before it is passed to the working template. In this example, |title=
is both a wrapper parameter and a canonical parameter that the wrapper template needs to modify before passing to the working template. To do this we first write:
|_reuse=title
then, in the wrapper template's {{#invoke:Template wrapper|wrap|_template=...|...}}
we write:
|title=Modified {{{title}}}
_reused parameters cannot be overridden.
_exclude
|_exclude=
takes a comma-separated list of parameters used by the wrapper template that are not to be passed to the working template. This list applies to all wrapper and canonical parameters (including those canonical parameters that are renamed alias parameters) received from the wrapper template.
As an example, a wrapper template might use |id=
to supply a portion of the value assigned to default parameter |url=
so we would write:
|_exclude=id
then, in the wrapper template's {{#invoke:Template wrapper|wrap|_template=...|...}}
we write:
|url=https://example.com/{{{id}}}
The modified |url=
value is passed on to working template but |id=
and its value is not.
_reused and default parameters cannot be excluded.
_include-positional
|_include-positional=
is a boolean parameter that takes only one value: yes
; the default (empty, missing) is no
(positional parameters normally excluded). When set to yes
, Module:Template wrapper will pass all positional parameters to the working template.
See also §_alias-map.
覆盖默认参数
Editors may override default parameters by simply setting the default parameter to the desired value in the wrapper template. This module ignores empty parameters (those parameters that are named but which do not have an assigned value). When it is desirable to override a default parameter to no value, use the special keyword unset
. Default parameters with this value are passed to the working template as empty (no assigned value) parameters.
_reused parameters cannot be unset
or overridden.
调试/文档模式
This module has two entry points. A wrapper template might use a module {{#invoke:}}
written like this:
{{#invoke:Template wrapper|{{#if:{{{_debug|}}}|list|wrap}}|_template=<working template>|_exclude=_debug, ...|...}}
where the |_debug=
wrapper parameter, set to any value, will cause the module to render the call to the working template without actually calling the working template.
As an example, {{cite wikisource}}
is a wrapper template that uses {{citation}}
as its working template. {{cite wikisource}}
accepts positional parameters but {{citation}}
does not so the wrapper template must convert the positional parameters to named parameters which it does using the |_alias-map=
parameter:
{{#invoke:template wrapper|{{#if:{{{_debug|}}}|list|wrap}}|_template=citation |_exclude=..., _debug <!-- unnecessary detail omitted --> |_alias-map=1:title, 2:author, 3:language
This example uses positional parameters and sets |_debug=yes
to show that the {{citation}}
template is correctly formed:
{{cite wikisource|Sentido y sensibilidad|Jane Austen|es|_debug=yes}}
- Jane Austen.
Sentido y sensibilidad. 维基文库 (西班牙文).
- Jane Austen.
and, with |_debug=
unset:
{{cite wikisource|Sentido y sensibilidad|Jane Austen|es|_debug=}}
- Jane Austen.
Sentido y sensibilidad. 维基文库 (西班牙文).
- Jane Austen.
The |_debug=
name is chosen here for convenience but may be anything so long as it matches the {{#if:}}
in the {{#invoke:}}
.
You may also call the link
function to get something like the left-hand side of Template:yy. This is essentially the list
function with the template name turned into a link.
Template:Yytop
Template:Yy
Template:Yybottom