Lurkmore:Шаблоны

Материал из Lurkmore

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

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

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

Содержание

Как луркать

Язык разметки, включая разметку шаблонов описан на сайте MediaWiki.org. Там описаны различные версии медиавики и различные расширения. Нас интересует наше, поэтому смотрим Служебная:Version и обнаруживаем, что версия 1.15, а из полезных для разметки расширений имеются 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, первый не задан.

Магические слова

Много их. Некоторые из:

Имя страницы

{{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 вполне может быть пустой строкой. Применяется дохуя где.

  • {{#ifexpr:условие|если выполняется|если не выполняется}} — очень полезная функция для проверки выполнения условия. В условие можно поставить, например, {{значение1}} < {{значение2}}, тоесть все условия, в которых можно применить арифметическую проверку.


Больше луркать здесь

Тэги

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

  • <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}}, а для интересующихся есть комменты. Хорошие комменты растят карму, я гарантирую это!

Какие шаблоны есть

Плашки

Основная статья: ЛМ:плашки

Шаблоны-списки

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

Прочие полезности

  • {{tp}} — кошерно сослаться на шаблон
  • {{NSFW}} — скрывает NSFW-контент, типа Гуро, Goatse, tubgirl. На самом деле, NSFW чаще скрывает говно, на которое не стоит тратить время.
{{NSFW|title=высер|content={{хуита}}}} — здесь плашка сломается, первый символ после равно не должен быть {. Вот так, например, обходится: {{NSFW|title=высер|content=<nowiki>ХУИТА</nowiki> …}}
[[Файл:Example.jpg|thumb|NSFW]] — скрывает изображение с шок-материалом, вместо него пишется надпись «not safe for work». Изображение становится видно, если на него один раз кликнуть.
  • {{Spoiler}}(спойлер: да, таки действительно спойлер).
  • {{video}} — вставка видео с YouTube и не только.
  • {{ET}} -
  • {{note}} — вставка висящей справа свёрнутой заметки.
  • {{Q}}, {{Цитата}} — цитирование. Первый параметр цитата, второй автор, автор по умолчанию Анонимус.
  • {{Acronym}}, {{Укроним}}, {{Acr}} — тултип. Acronym для JAFA, Укроним для Інших мов.
  • {{ascii}} — для оформления ASCII-арта моноширинным шрифтом на чёрном фоне.
  • {{Lj comm}}, {{Lj user}} — ссылки на ЖЖшку.
  • {{lolwhat}}, {{prooflink}}, {{proofpic}} — выражает сомнение[ЩИТО?] в достоверности информации[пруфлинк?]
  • {{r}} — moar дурацких запросов, в том числе и совсем кастомных.
  • {{doc}} — для описания к шаблонам. Идея в том, что doc к залоченному шаблону может редактировать даже анонимус.
  • {{Main}} — ссылается на основную статью. Как здесь в #Плашки.
  • {{Stub}} — для недописанных разделов статьи.
  • и другие…