Справка:Шаблоны

Материал из Lukomore — свободная энциклопедия правды

Перейти к: навигация, поиск

Шаблоны MediaWiki полезны для размещения одинаковых стандартных элементов (текста или форматирования) в других страницах.

Содержание

[править] Создание шаблонов

Шаблоны являются обычными вики-страницами, с той разницей, что их названия начинаются с префикса «Шаблон:» («Template:»), поэтому их можно создавать так же как обычные страницы.


[править] Использование шаблонов

Шаблоны — это вики-страницы, используемые в других вики-страницах. Доступных способов использования три:

  • {{Name}} добавляет в страницу копию содержимого шаблона (страницы с именем [[Template:Name]]). Обращение к шаблону производится каждый раз, когда производится извлечение использующей его страницы. Таким образом, если изменить шаблон, то отображение использующих его страниц тоже изменится.
  • {{subst:Name}} заменяет данную строку содержимым шаблона в момент сохранения страницы. Таким образом, после сохранения в ней остается копия шаблона, которую можно будет изменять так же, как обычную wiki-разметку. После сохранения шаблон и страница редактируются независимо: изменение страницы не влияет на шаблон, изменение шаблона не влияет на страницу. Note: не стоит пользоваться данным способом, если вы хотите, чтобы изменения шаблона отображались в использующих его страницах.
  • {{msgnw:Name}} включает шаблон в виде формы, отображающейся в использующей его странице, аналогично тому как действует тэг <nowiki>. Как и в первом случае, изменение шаблона изменяет то, что мы видим при отображении страницы.

[править] Параметры в шаблонах

Шаблон:Hl2 colspan="2" align="center" |Шаблон с нумерованными параметрами
 
'''Спасибо...'''<br>
<small>за {{{1}}}.<br>
Жму руку, {{{2}}}</small>
Шаблон:Hl2|Что пишем Шаблон:Hl2|Как будет выглядеть
{{Thankyou/ru|участие в переводе|Вики}}

Шаблон:Thankyou/ru

Шаблон:Hl2 colspan="2" align="center" |Шаблон с именованными параметрами
 
'''Спасибо...'''<br>
<small>за {{{reason}}}.<br>
Жму руку, {{{signature}}}</small>
Шаблон:Hl2|Что пишем Шаблон:Hl2|Как будет выглядеть
{{Thankyou/ru
|причина=участие в переводе
|подпись=Вики}}

Шаблон:Thankyou/ru

В шаблонах можно объявить параметры, либо как нумерованные {{{1}}} либо именованные {{{param}}}.

Пример: Вы хотите оставлять подписи с благодарностью на страницах обсуждения других пользователей, с объяснением, за что вы благодарите. Вы можете создать Template:Thankyou/ru с текстом, аналогичным изображенному в таблице примеру.

Вставляя шаблон в страницу, укажите значения для его параметров, разделяя их символом (|): {{Thankyou/ru|всё хорошее|Вики}}. Для именованных параметров используйте пары «имя=значение», разделяя их тем же символом (|): {{Thankyou/ru|причина=всё хорошее|подпись=Вики}}. Преимущество использования именованных параметров — гибкость порядка их указания и большая ясность в понимании их назначения, особенно когда параметров много. Если требуется изменить порядок нумерованных параметров, их следует упомянуть явно: {{Thankyou|2=Вики|1=всё хорошее}}.

Для параметров можно указать значения по умолчанию, т.е. значения, которые будут использоваться, если никакого значения не указано. Например: {{{reason|всё хорошее}}} будет присваивать значение «всё хорошее» параметру reason, если оно не будет указано в вызове шаблона явно.

[править] Управление включением шаблонов

Тем, какая часть шаблона будет включаться в страницу, можно управлять с помощью тэгов <noinclude> и <includeonly>.

Всё, что находится между <noinclude> и </noinclude> будет обрабатываться и отображаться только если страница шаблона просматривается сама по себе.

Возможное применения данной возможности следующие:

  • Отнесение шаблонов к категориям;
  • Межъязыковые ссылки на похожие шаблоны на других языках;
  • Пояснительный текст по использованию шаблона.

Противоположным образом работает тэг <includeonly>. Текст, находящийся между <includeonly> и </includeonly> будет обрабатываться и отображаться только когда страница шаблона включена в другую страницу. Очевидным применением этого является добавление всех страниц, содержащих данный шаблон, к категории, без добавления самого шаблона в эту категорию.

Замечание: Когда вы изменяете категории, добавляемые в страницу с использованием шаблонов, категоризация может не сработать сразу, так как она управляется очередью задач.

[править] Систематизация шаблонов

Для эффективного использования шаблонов нужно их легко находить и применять. Легче всего это обеспечить, поместив на страницу шаблона пример его использования. Например такой:

<noinclude>
== Использование ==
Позволяет давать ссылку на тему:
{{NameOfTemplate|Term1+Term2+Term3}}
</noinclude>

Таким образом редактор сможет просто скопировать пример и модифицировать его для своих нужд.







Шаблоны в первом приближении являются автоматизированным копипастом. Однако, они позволяют невозбранно достичь большего, чем позволяет копипаст. А ещё говорят, что они полны по Тьюрингу. Разработчикам ПО это может что-то напоминать.

Следует обратить внимание на то, что шаблоны могут не только копипастить текст, но и оказывать другое влияние на страницу, в частности, относить её к какой-либо категории.

[править] Как искать

Язык разметки, включая разметку шаблонов описан на сайте MediaWiki. Там описаны различные версии медиавики и различные расширения. Нас интересует наше, поэтому смотрим Служебная:Version и обнаруживаем, что версия 1.21.1, а из полезных для разметки расширений имеются ParserFunctions и Cite. Так-то!

Кстати, понимаете ли вы по-английски?

Шаблоны же находятся непосредственно здесь, в пространстве имён «Шаблон». Участник, даже если он Анонимус, может невозбранно создать собственный или отредактировать имеющийся шаблон. Ну, кроме тех случаев, когда он не может.

[править] Как вставлять

Шаблоны вставляются двойными фигурными скобками. Вот такое {{TeX}} вставляет в текущую страницу содержимое страницы Шаблон:TeX, и получается вот так: Шаблон:TeX. «Шаблон:» — пространство имён, в котором берутся шаблоны.

Можно вставлять и страницы из других пространств имён, добавив двоеточие в начало — {{:Goatse cx/ASCII}} вставляет Goatse cx/ASCII. Алсо, можно начинать на слеш для вставки подстраницы: на странице Goatse cx можно написать просто {{/ASCII}}. Обычно нет причин держать шаблон не в пространстве имён «Шаблон».

На примере goatse и TeX был рассмотрен просто копипаст, но шаблоны могут быть контекстнозависимыми через параметры и магические слова.

[править] Параметры

Могут иметь либо порядковый номер, либо имя. Например, {{delete|хуита|todo=апстена >>}}. Здесь «хуита» — параметр с номером 1, а «апстена >>» — параметр с именем todo. В самом шаблоне они используются как {{{1}}} и {{{todo}}} соответственно. Или чаще {{{1|}}} и {{{todo|написать нормальную статью}}}. То что после вертикальной черты подставляется, если параметр не задан. В одном шаблоне тот же параметр можно использовать любым способом любое число раз.

ACHTUNG: не заданый параметр и пустой параметр — две большие разницы. {{xyz| }} — первый параметр пустой, {{xyz}} первый параметр на задан, {{xyz|| abc}} — второй параметр abc, первый пустой, {{xyz|2=abc}} второй параметр abc, первый не задан.

[править] Магические слова

В движке MediaWiki есть такое понятие как Magic words, которые в свою очередь можно подразделить на команды и заранее готовые шаблоны (переменные). Команды выглядят так <code>__NOTOC__ __FORCETOC__ __TOC__</code>, переменные же выглядят немного иначе, они похожи на стандартные шаблоны, имеют следующий вид: <code>{{CURRENTYEAR}} {{CURRENTMONTH}} {{CURRENTMONTHNAME}}</code> Это так называемые заранее заготовленные родные шаблоны, которые можно так же как и шаблоны вызывать на страницах. Вызов происходит следующим образом: <code>{{ВОЛШЕБНОЕСЛОВО}}</code>, т.е. так же как и обычные пользовательские шаблоны, но в отличии от них Волшебные Слова не принимают аргументов. На странице вместо кода вызова определенного волшебного слова подставляется результат его работы. Подобных Магик слов большое множество, подробнее почитать о них можно на сайте MediaWiki Org. В разделе Help:Magic words. Некоторые из:

[править] Имя страницы

{{PAGENAME}}, {{SUBPAGENAME}}, etc. — эти позволяют получить имя текущей страницы в разных форматах.

Не шаблона, а именно текущей. Если шаблон foo вставлен в шаблон bar, и всё это вставлено в страницу FUBAR, то {{PAGENAME}}, который находится на foo, выдаст на странице FUBAR не foo и не bar, а именно FUBAR.

Варианты этого магического слова с примерами, как оно работало бы, находясь на странице Участник:Test/Testspace вот:

Разметка Результат
{{FULLPAGENAME}} Участник:Test/Testspace/Place
{{PAGENAME}} Test/Testspace/Place
{{BASEPAGENAME}} Test/Testspace
{{SUBPAGENAME}} Place
{{SUBJECTPAGENAME}} Участник:Test/Testspace
{{TALKPAGENAME}} Обсуждение участника:Test/Testspace
{{NAMESPACE}} Участник

[править] Дата и время

{{CURRENTYEAR}}, {{CURRENTMONTH}}, etc.

[править] Форматировние

  • {{lc:БуКаВкИ}} — букавки,
  • {{uc:БуКаВкИ}} — БУКАВКИ.
  • {{lcfirst:БуКаВкИ}} и
  • {{ucfirst:БуКаВкИ}} изменяют только первую букву.

[править] Арифметика и логика

  • {{#expr:выражение}} — умеет делать арифметические и логические действия, округлять, возводить в степень, находить логарифм, применять тригонометрические функции. Не умеет делить на ноль и находить арксинус четырёх. Очень нужная вещь.
  • {{#if:текст|что выдать если непусто|что выдать если пусто}} — проверяет пустой ли текст. Разумеется, с неизменной строкой не очень полезно, и туда как текст обычно запиливают параметры или магические слова. Например {{#if:{{NAMESPACE}}|Это хуита|Это основное пространство}} — реально используется в {{notcrap}}.
  • {{#ifeq:что|чему|если равно|если не равно}} — проверяет равенство строк что и чему. Регистрозависимое, что позволяет юзать вместе со всякими lcfirst. Пример в {{Языки}}, {{Девайс}}.
  • #switch
{{#switch: что
| равно-чему1=выдать1
| равно-чему2
| равно-чему3=выдать3
|#default = выдать в остальных случаях}}

Сравнивает что с вариантами равно-чемуn и выдаёт соответствующий результат. В случаях, где нет знака равно, как здесь с равно-чему2, берётся следующий, то есть выдать3. равно-чемуn или выдатьn вполне может быть пустой строкой. Применяется практически везде.

[править] Тэги

Некоторые тэги имеют отношение к шаблонам:

  • <nowiki></nowiki> — отключает обработку шаблонов, как и всю остальную обработку викиразметки.
  • <noinclude></noinclude> — позволяет включить в шаблон что-то, что не будет включено при его подстановке. Полезно для включения шаблона в категорию, документации шаблона, плашек для шаблона.
  • <includeonly></includeonly> — позволяет включить в шаблон что-то, что будет включено при его подстановке, но не в самой странице шаблона. На первый взгляд бесполезно, однако может быть нужно прописать категорию к месту включения шаблона, но не к шаблону.

Внимание! Вики-теги очень чувствительны к переносу строки, поэтому их желательно не отрывать от содержимого.
Например:

<includeonly><b>Here be dragons.</b></includeonly>

будет нормально;

<includeonly><b>
Here be dragons.
</b></includeonly>

тоже будет нормально;

<includeonly>
<b>Here be dragons.</b>
</includeonly>
а это даст пустой параграф (

) до и после Here be dragons.

[править] Фичи

[править] Комментарии

В вике используются html’ные комментарии:

<!-- Здесь был Вася. -->

При создании своего премудрого шаблона обязательно надо писать, как он работает! Для юзеров есть шаблон {{doc}}, а для интересующихся есть комменты. Хорошие комменты растят карму!

[править] Шаблоны-списки

Версия «см. также», обладающая большей функциональностью. Также, её проще поддерживать — достаточно добавить ссылку в шаблон, а не искать все статьи, куда её нужно добавить. Кстати, навязывает категории, которые обычно лень проставлять. Словом, хорошая вещь.

Понятное дело, что все шаблоны хранятся в пространстве имен «Шаблоны», хотя их можно хранить и другом месте, но в этом нет необходимости. Но мы пошли дальше и создали служебную категорию для более удобного поиска шаблонов. Таким образом у нас на Лукоморье все шаблоны относятся к служебной категории Категория:Шаблоны. Там вы можете посмотреть все существующие шаблоны и воспользоваться необходимым при необходимости.

Комментарии Справка:Шаблоны

[Show/Hide]
  • FB
  • HC
  • Disqus
comments powered by HyperComments
comments powered by Disqus