Модуль:Transclude/doc: различия между версиями
Mansur700 (обсуждение | вклад) (Новая страница: «{{СИШ}} {{module rating|p}} == Функции == === uni === {{#invoke:Transclude|uni|''имя шаблона''|''список параметров''…...») |
Adam (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
{{docpage}} | |||
{{TOC-right}} | |||
{{СИШ}} | {{СИШ}} | ||
{{module rating|p}} | {{module rating|p}} | ||
Этот модуль содержит функции, позволяющие вызывать внутренний шаблон из объемлющего шаблона после некоторой обработки параметров. Под объемлющим шаблоном имеется в виду шаблон, в котором написано <code><nowiki>{{#invoke:Transclude|...</nowiki></code>, например, {{t|Пиктограммы СГС}}. В вызове модуля указывается название функции и внутренний шаблон, вроде {{t|Пиктограммы СГС/основа}}, который собственно и обрабатывает аргументы, полученные от объемлющего шаблона. | |||
=== | {{-}} | ||
{| class="wikitable" | |||
! Функция | |||
! Код объемлющего шаблона | |||
! style="min-width:20em;" | Код его вызова | |||
! style="min-width:20em;" | Результат | |||
|- | |||
| [[#call|call]] | |||
| <code><nowiki>{{#invoke:Transclude|call|внутренний шаблон}}<br>дополнение</nowiki></code> | |||
| <code><nowiki>{{объемлющий шаблон|1|2|3}}</nowiki></code> | |||
| <code><nowiki>{{внутренний шаблон|1|2|3}}<br>дополнение</nowiki></code> | |||
|- | |||
| [[#forall|forall]] | |||
| <code><nowiki>{{#invoke:Transclude|forall|внутренний шаблон}}</nowiki></code> | |||
| <code><nowiki>{{объемлющий шаблон|1|2|3}}</nowiki></code> | |||
| <code><nowiki>{{внутренний шаблон|1}}</nowiki><br><nowiki>{{внутренний шаблон|2}}</nowiki><br><nowiki>{{внутренний шаблон|3}}</nowiki></code> | |||
|- | |||
| [[#join|join]] | |||
| <code><nowiki>{{#invoke:Transclude|join|<nowiki>, </now</nowiki><nowiki>iki>|<nowiki> и </now</nowiki><nowiki>iki>}}</nowiki></code> | |||
| <code><nowiki>{{объемлющий шаблон|1|2|3}}</nowiki></code> | |||
| <code><nowiki>1, 2 и 3</nowiki></code> | |||
|- | |||
| [[#npc|npc]] | |||
| <code><nowiki>{{#invoke:Transclude|npc|внутренний шаблон|вверху=|внизу=}}</nowiki></code> | |||
| <pre><nowiki>{{объемлющий шаблон | |||
|вверху1 = 11 | |||
|внизу1 = 12 | |||
|вверху2 = 21 | |||
|внизу2 = 22 | |||
}}</nowiki></pre> | |||
| <pre><nowiki>{{внутренний шаблон | |||
|вверху = 11 | |||
|внизу = 12 | |||
}}{{внутренний шаблон | |||
|вверху = 21 | |||
|внизу = 22 | |||
}}</nowiki></pre> | |||
|- | |||
| [[#cycle|cycle]] | |||
| TODO | |||
| TODO | |||
| TODO | |||
|} | |||
== Методы == | |||
=== call === | |||
: <code><nowiki>{{#invoke:Transclude|call|</nowiki>''внутренний шаблон''<nowiki>}}</nowiki></code> | |||
Вызывает внутренний шаблон с аргументами объемлющего шаблона (того, в коде которого указан #invoke). Нужно для того, чтобы дописать к выводу внутреннего шаблона что-то новое. Передаются как нумерованные, так и именованные аргументы. | |||
Например, объемлющий шаблон с кодом | |||
: <code><nowiki>{{#invoke:Transclude|call|внутренний шаблон}}<br>дополнение</nowiki></code>, | |||
вызванный таким образом: | |||
: <code><nowiki>{{объемлющий шаблон|1|2|3}}</nowiki></code>, | |||
вернёт | |||
: <code><nowiki>{{внутренний шаблон|1|2|3}}<br>дополнение</nowiki></code>. | |||
Пример использования: [[Шаблон:TRef]]. | |||
=== forall === | === forall === | ||
: <code><nowiki>{{#invoke:Transclude|forall|</nowiki>''внутренний шаблон''<nowiki>}}</nowiki></code> | |||
: <code><nowiki>{{#invoke:Transclude|forall|</nowiki>''внутренний шаблон''<nowiki>|</nowiki>separator=''разделитель''<nowiki>|</nowiki>conjunction=''последний разделитель''<nowiki>}}</nowiki></code> | |||
Вызывает | Вызывает внутренний шаблон, по одному передавая ему нумерованные параметры объемлющего шаблона (того, в коде которого указан #invoke). Параметры могут быть набраны в произвольном порядке и с пропусками, они будут отсортированы. Пустые параметры не пробрасываются. | ||
Например, объемлющий шаблон с кодом | |||
: <code><nowiki>{{#invoke:Transclude|forall|внутренний шаблон}}</nowiki></code>, | |||
вызванный таким образом: | |||
: <code><nowiki>{{объемлющий шаблон|1|2|3}}</nowiki></code>, | |||
вернёт | |||
: <code><nowiki>{{внутренний шаблон|1}}{{внутренний шаблон|2}}{{внутренний шаблон|3}}</nowiki></code>. | |||
== | Можно передать разделитель и последний разделитель через параметры ''separator'' и ''conjunction'', по умолчанию они пусты. Если указан только ''separator'', то ''conjunction'' заполняется из него. Например, объемлющий шаблон с кодом | ||
: <code><nowiki>{{#invoke:Transclude|forall|внутренний шаблон|separator=<nowiki>, </now</nowiki><nowiki>iki>|conjunction=<nowiki> и </now</nowiki><nowiki>iki>}}</nowiki></code>, | |||
вызванный таким образом: | |||
: <code><nowiki>{{объемлющий шаблон|1|2|3}}</nowiki></code>, | |||
вернёт | |||
: <code><nowiki>{{внутренний шаблон|1}}, {{внутренний шаблон|2}} и {{внутренний шаблон|3}}</nowiki></code>, | |||
а объемлющий шаблон с кодом | |||
: <code><nowiki>{{#invoke:Transclude|forall|внутренний шаблон|separator=<nowiki>, </now</nowiki><nowiki>iki>}}</nowiki></code>, | |||
вызванный таким образом: | |||
: <code><nowiki>{{объемлющий шаблон|1|2|3}}</nowiki></code>, | |||
вернёт | |||
: <code><nowiki>{{внутренний шаблон|1}}, {{внутренний шаблон|2}}, {{внутренний шаблон|3}}</nowiki></code>. | |||
Если требуется, чтобы разделитель содержал пробел в начале или в конце, нужно заключить его в <code><now<nowiki>iki></now</nowiki>iki></code>. | |||
Примеры использования: | |||
* Простой: [[Шаблон:Пиктограммы СГС]] вызывает [[Шаблон:Пиктограммы СГС/основа]], см. [[Шаблон:Пиктограммы СГС/тесты]]. | |||
* Более продвинутый: [[Шаблон:Falseredirect]] вызывает [[Шаблон:Falseredirect/основа]], см. [[Шаблон:Falseredirect/тесты]]. | |||
< | === join === | ||
: <code><nowiki>{{#invoke:Transclude|join|</nowiki>''разделитель''|''последний разделитель''<nowiki>}}</nowiki></code> | |||
Берёт нумерованные аргументы объемлющего шаблона (того, в коде которого указан #invoke) и склеивает их в единую строку. Пустые аргументы пропускаются. Используются разделитель и последний разделитель, указанные первым и вторым параметрами в вызове модуля. Если указан только первый параметр, второй заполняется из него. | |||
Например, объемлющий шаблон с кодом | |||
: <code><nowiki>{{#invoke:Transclude|join|<nowiki>, </now</nowiki><nowiki>iki>|<nowiki> и </now</nowiki><nowiki>iki>}}</nowiki></code>, | |||
вызванный таким образом: | |||
: <code><nowiki>{{объемлющий шаблон|1|2|3}}</nowiki></code>, | |||
вернёт | |||
: <code><nowiki>1, 2 и 3</nowiki></code>, | |||
а объемлющий шаблон с кодом | |||
: <code><nowiki>{{#invoke:Transclude|join|<nowiki>, </now</nowiki><nowiki>iki>}}</nowiki></code>, | |||
вызванный таким образом: | |||
: <code><nowiki>{{объемлющий шаблон|1|2|3}}</nowiki></code>, | |||
вернёт | |||
: <code><nowiki>1, 2, 3</nowiki></code>. | |||
Если требуется, чтобы разделитель содержал пробел в начале или в конце, нужно заключить его в <code><now<nowiki>iki></now</nowiki>iki></code>. | |||
Фактически аналогичен использованию [[#forall]] с внутренним шаблоном с кодом <code><nowiki>1</nowiki></code> и другим способом указания разделителей. | |||
Пример использования: [[Шаблон:Luaman]] и [[Шаблон:Luaman/тесты]] (TODO: заменить на более внятный пример). | |||
См. также: [[Модуль:Separated entries]]. | |||
=== npc === | === npc === | ||
: <code><nowiki>{{#invoke:Transclude|npc|</nowiki>''внутренний шаблон''<nowiki>|</nowiki>''параметр''=<nowiki>|</nowiki>''другой параметр''=<nowiki>|…}}</nowiki></code> | |||
: <code><nowiki>{{#invoke:Transclude|npc|</nowiki>''внутренний шаблон''<nowiki>|</nowiki>''общий параметр''=''значение''<nowiki>|</nowiki>''другой общий параметр''=''значение''<nowiki>|…|</nowiki>''параметр''=<nowiki>|</nowiki>''другой параметр''=<nowiki>|…}}</nowiki></code> | |||
Вызывает внутренний шаблон несколько раз, передавая в него блоки аргументов объемлющего шаблона (того, в коде которого указан #invoke). Параметр ''название12'' передаётся как ''название'' в 12-й вызов шаблона. Для этого нужно указать в вызове модуля {{para|''название''|}}. | |||
Например, объемлющий шаблон с кодом | |||
: <code><nowiki>{{#invoke:Transclude|npc|внутренний шаблон|вверху=|внизу=}}</nowiki></code>, | |||
вызванный таким образом: | |||
<pre><nowiki>{{объемлющий шаблон | |||
|вверху1 = 11 | |||
|внизу1 = 12 | |||
|вверху2 = 21 | |||
|внизу2 = 22 | |||
|вверху3 = 31 | |||
|внизу3 = 32 | |||
}}</nowiki></pre> | |||
возращает | |||
<pre><nowiki>{{внутренний шаблон | |||
|вверху = 11 | |||
|внизу = 12 | |||
}}{{внутренний шаблон | |||
|вверху = 21 | |||
|внизу = 22 | |||
}}{{внутренний шаблон | |||
|вверху = 31 | |||
|внизу = 32 | |||
}}</nowiki></pre> | |||
Можно также указать в вызове модуля общие аргументы, который будут передаваться в каждый вызов внутреннего шаблона. Например, объемлющий шаблон с кодом | |||
: <code><nowiki>{{#invoke:Transclude|npc|внутренний шаблон|общий={{{общий|}}}|вверху=|внизу=}}</nowiki></code>, | |||
вызванный таким образом: | |||
<pre><nowiki>{{объемлющий шаблон | |||
|общий = 0 | |||
= | |вверху1 = 11 | ||
|внизу1 = 12 | |||
|вверху2 = 21 | |||
|внизу2 = 22 | |||
== | |вверху3 = 31 | ||
|внизу3 = 32 | |||
}}</nowiki></pre> | |||
возращает | |||
<pre><nowiki>{{внутренний шаблон | |||
|общий = 0 | |||
|вверху = 11 | |||
|внизу = 12 | |||
}}{{внутренний шаблон | |||
|общий = 0 | |||
|вверху = 21 | |||
|внизу = 22 | |||
}}{{внутренний шаблон | |||
|общий = 0 | |||
|вверху = 31 | |||
|внизу = 32 | |||
}}</nowiki></pre> | |||
< | Обратите внимание, что необходимо ставить вертикальную черту сразу после значения общего параметра, потому что вызовы модулей, в отличие от вызовов шаблонов, не обрезают пробелы: | ||
: <code><nowiki>{{#invoke:Transclude|npc|внутренний шаблон|общий={{{общий|}}}|вверху=|внизу=}}</nowiki></code> | |||
или | |||
<pre><nowiki>{{#invoke:Transclude|npc|внутренний шаблон| | |||
общий={{{общий|}}}| | |||
вверху=| | |||
внизу=}}</nowiki></pre> | |||
но не | |||
<pre><nowiki>{{#invoke:Transclude|npc|внутренний шаблон | |||
|общий={{{общий|}}} | |||
|вверху= | |||
|внизу=}}</nowiki></pre> | |||
Замечания: | |||
* Общие параметры также учитываются вместе с остальными при выборе того, что передавать во внутренний шаблон: если в объемлющем шаблоне указан параметр ''общий12'', он передастся в 12-й вызов внутреннего шаблона под названием ''общий'' и может заменить общий параметр. | |||
* Происходят вызовы внутреннего шаблона не для всех нумерованных блоков параметров, а только для непустых, так что могут быть пропуски. А именно, вызывается блок 12, если в объемлющем шаблоне есть параметр ''параметр12'' и в вызове модуля есть параметр ''параметр''. Рекомендуется, чтобы внутренний шаблон при вызове без параметров возвращал пустую строку. | |||
Пример использования: [[Шаблон:Карточка]] вызывает [[Шаблон:Карточка/внизу]]. | |||
=== cycle === | === cycle === | ||
: <code><nowiki>{{#invoke:Transclude|cycle|</nowiki>''имя шаблоан''|{{mvar|n}}|''список параметров''…<nowiki>}}</nowiki></code> | |||
{{заготовка раздела}} | |||
Действует аналогично [[#forall]] по числовой переменной, | Действует аналогично [[#forall]] по числовой переменной, изменяющейся от 1 до {{mvar|n}}. Другое начало можно задать в виде «-10..10» вместо {{mvar|n}}, или в обратном порядке «10..-10». Также можно задать предел цикла в виде имени шаблона (если второго параметра нет или он имеет вид «1..», шаблон раскрывается, пока не пуст). Не увлекайтесь! | ||
Замечание: номера нумерованных параметров шаблона при записи увеличить на 1. | Замечание: номера нумерованных параметров шаблона при записи увеличить на 1. | ||
Параметром <code>output</code> можно задать как выводить шаблоны. | |||
* ''newline'' — каждый шаблон на новой строке. | |||
* ''inline'' — все шаблоны в одну строку (по-умолчанию). | |||
* | |||
== Тесты шаблона == | |||
См. [[Модуль:Transclude/tests]] и [[Шаблон:Test transclude]]. | |||
< | == См. также == | ||
[[Категория:Модули | * [[Модуль:String/split]] | ||
* [[Модуль:CallMW]] | |||
<includeonly>[[Категория:Тептар:Модули]]</includeonly> |
Текущая версия от 01:13, 20 февраля 2022
Внимание! Это один из самых используемых модулей. |
Этот модуль относится к критическим. У него очень много включений или он используется с подстановкой. Из-за опасности вандализма или ошибочного редактирования он был защищён. |
Этот модуль содержит функции, позволяющие вызывать внутренний шаблон из объемлющего шаблона после некоторой обработки параметров. Под объемлющим шаблоном имеется в виду шаблон, в котором написано {{#invoke:Transclude|...
, например, {{Пиктограммы СГС}}. В вызове модуля указывается название функции и внутренний шаблон, вроде {{Пиктограммы СГС/основа}}, который собственно и обрабатывает аргументы, полученные от объемлющего шаблона.
Функция | Код объемлющего шаблона | Код его вызова | Результат |
---|---|---|---|
call | {{#invoke:Transclude|call|внутренний шаблон}}<br>дополнение
|
{{объемлющий шаблон|1|2|3}}
|
{{внутренний шаблон|1|2|3}}<br>дополнение
|
forall | {{#invoke:Transclude|forall|внутренний шаблон}}
|
{{объемлющий шаблон|1|2|3}}
|
{{внутренний шаблон|1}}
|
join | {{#invoke:Transclude|join|<nowiki>, </nowiki>|<nowiki> и </nowiki>}}
|
{{объемлющий шаблон|1|2|3}}
|
1, 2 и 3
|
npc | {{#invoke:Transclude|npc|внутренний шаблон|вверху=|внизу=}}
|
{{объемлющий шаблон |вверху1 = 11 |внизу1 = 12 |вверху2 = 21 |внизу2 = 22 }} |
{{внутренний шаблон |вверху = 11 |внизу = 12 }}{{внутренний шаблон |вверху = 21 |внизу = 22 }} |
cycle | TODO | TODO | TODO |
Методы[править код]
call[править код]
{{#invoke:Transclude|call|внутренний шаблон}}
Вызывает внутренний шаблон с аргументами объемлющего шаблона (того, в коде которого указан #invoke). Нужно для того, чтобы дописать к выводу внутреннего шаблона что-то новое. Передаются как нумерованные, так и именованные аргументы.
Например, объемлющий шаблон с кодом
{{#invoke:Transclude|call|внутренний шаблон}}<br>дополнение
,
вызванный таким образом:
{{объемлющий шаблон|1|2|3}}
,
вернёт
{{внутренний шаблон|1|2|3}}<br>дополнение
.
Пример использования: Шаблон:TRef.
forall[править код]
{{#invoke:Transclude|forall|внутренний шаблон}}
{{#invoke:Transclude|forall|внутренний шаблон|separator=разделитель|conjunction=последний разделитель}}
Вызывает внутренний шаблон, по одному передавая ему нумерованные параметры объемлющего шаблона (того, в коде которого указан #invoke). Параметры могут быть набраны в произвольном порядке и с пропусками, они будут отсортированы. Пустые параметры не пробрасываются.
Например, объемлющий шаблон с кодом
{{#invoke:Transclude|forall|внутренний шаблон}}
,
вызванный таким образом:
{{объемлющий шаблон|1|2|3}}
,
вернёт
{{внутренний шаблон|1}}{{внутренний шаблон|2}}{{внутренний шаблон|3}}
.
Можно передать разделитель и последний разделитель через параметры separator и conjunction, по умолчанию они пусты. Если указан только separator, то conjunction заполняется из него. Например, объемлющий шаблон с кодом
{{#invoke:Transclude|forall|внутренний шаблон|separator=<nowiki>, </nowiki>|conjunction=<nowiki> и </nowiki>}}
,
вызванный таким образом:
{{объемлющий шаблон|1|2|3}}
,
вернёт
{{внутренний шаблон|1}}, {{внутренний шаблон|2}} и {{внутренний шаблон|3}}
,
а объемлющий шаблон с кодом
{{#invoke:Transclude|forall|внутренний шаблон|separator=<nowiki>, </nowiki>}}
,
вызванный таким образом:
{{объемлющий шаблон|1|2|3}}
,
вернёт
{{внутренний шаблон|1}}, {{внутренний шаблон|2}}, {{внутренний шаблон|3}}
.
Если требуется, чтобы разделитель содержал пробел в начале или в конце, нужно заключить его в <nowiki></nowiki>
.
Примеры использования:
- Простой: Шаблон:Пиктограммы СГС вызывает Шаблон:Пиктограммы СГС/основа, см. Шаблон:Пиктограммы СГС/тесты.
- Более продвинутый: Шаблон:Falseredirect вызывает Шаблон:Falseredirect/основа, см. Шаблон:Falseredirect/тесты.
join[править код]
{{#invoke:Transclude|join|разделитель|последний разделитель}}
Берёт нумерованные аргументы объемлющего шаблона (того, в коде которого указан #invoke) и склеивает их в единую строку. Пустые аргументы пропускаются. Используются разделитель и последний разделитель, указанные первым и вторым параметрами в вызове модуля. Если указан только первый параметр, второй заполняется из него.
Например, объемлющий шаблон с кодом
{{#invoke:Transclude|join|<nowiki>, </nowiki>|<nowiki> и </nowiki>}}
,
вызванный таким образом:
{{объемлющий шаблон|1|2|3}}
,
вернёт
1, 2 и 3
,
а объемлющий шаблон с кодом
{{#invoke:Transclude|join|<nowiki>, </nowiki>}}
,
вызванный таким образом:
{{объемлющий шаблон|1|2|3}}
,
вернёт
1, 2, 3
.
Если требуется, чтобы разделитель содержал пробел в начале или в конце, нужно заключить его в <nowiki></nowiki>
.
Фактически аналогичен использованию #forall с внутренним шаблоном с кодом 1
и другим способом указания разделителей.
Пример использования: Шаблон:Luaman и Шаблон:Luaman/тесты (TODO: заменить на более внятный пример).
См. также: Модуль:Separated entries.
npc[править код]
{{#invoke:Transclude|npc|внутренний шаблон|параметр=|другой параметр=|…}}
{{#invoke:Transclude|npc|внутренний шаблон|общий параметр=значение|другой общий параметр=значение|…|параметр=|другой параметр=|…}}
Вызывает внутренний шаблон несколько раз, передавая в него блоки аргументов объемлющего шаблона (того, в коде которого указан #invoke). Параметр название12 передаётся как название в 12-й вызов шаблона. Для этого нужно указать в вызове модуля |название=
.
Например, объемлющий шаблон с кодом
{{#invoke:Transclude|npc|внутренний шаблон|вверху=|внизу=}}
,
вызванный таким образом:
{{объемлющий шаблон |вверху1 = 11 |внизу1 = 12 |вверху2 = 21 |внизу2 = 22 |вверху3 = 31 |внизу3 = 32 }}
возращает
{{внутренний шаблон |вверху = 11 |внизу = 12 }}{{внутренний шаблон |вверху = 21 |внизу = 22 }}{{внутренний шаблон |вверху = 31 |внизу = 32 }}
Можно также указать в вызове модуля общие аргументы, который будут передаваться в каждый вызов внутреннего шаблона. Например, объемлющий шаблон с кодом
{{#invoke:Transclude|npc|внутренний шаблон|общий={{{общий|}}}|вверху=|внизу=}}
,
вызванный таким образом:
{{объемлющий шаблон |общий = 0 |вверху1 = 11 |внизу1 = 12 |вверху2 = 21 |внизу2 = 22 |вверху3 = 31 |внизу3 = 32 }}
возращает
{{внутренний шаблон |общий = 0 |вверху = 11 |внизу = 12 }}{{внутренний шаблон |общий = 0 |вверху = 21 |внизу = 22 }}{{внутренний шаблон |общий = 0 |вверху = 31 |внизу = 32 }}
Обратите внимание, что необходимо ставить вертикальную черту сразу после значения общего параметра, потому что вызовы модулей, в отличие от вызовов шаблонов, не обрезают пробелы:
{{#invoke:Transclude|npc|внутренний шаблон|общий={{{общий|}}}|вверху=|внизу=}}
или
{{#invoke:Transclude|npc|внутренний шаблон| общий={{{общий|}}}| вверху=| внизу=}}
но не
{{#invoke:Transclude|npc|внутренний шаблон |общий={{{общий|}}} |вверху= |внизу=}}
Замечания:
- Общие параметры также учитываются вместе с остальными при выборе того, что передавать во внутренний шаблон: если в объемлющем шаблоне указан параметр общий12, он передастся в 12-й вызов внутреннего шаблона под названием общий и может заменить общий параметр.
- Происходят вызовы внутреннего шаблона не для всех нумерованных блоков параметров, а только для непустых, так что могут быть пропуски. А именно, вызывается блок 12, если в объемлющем шаблоне есть параметр параметр12 и в вызове модуля есть параметр параметр. Рекомендуется, чтобы внутренний шаблон при вызове без параметров возвращал пустую строку.
Пример использования: Шаблон:Карточка вызывает Шаблон:Карточка/внизу.
cycle[править код]
{{#invoke:Transclude|cycle|имя шаблоан|n|список параметров…}}
Этот раздел не завершён. |
Действует аналогично #forall по числовой переменной, изменяющейся от 1 до n. Другое начало можно задать в виде «-10..10» вместо n, или в обратном порядке «10..-10». Также можно задать предел цикла в виде имени шаблона (если второго параметра нет или он имеет вид «1..», шаблон раскрывается, пока не пуст). Не увлекайтесь!
Замечание: номера нумерованных параметров шаблона при записи увеличить на 1.
Параметром output
можно задать как выводить шаблоны.
- newline — каждый шаблон на новой строке.
- inline — все шаблоны в одну строку (по-умолчанию).
Тесты шаблона[править код]
См. Модуль:Transclude/tests и Шаблон:Test transclude.