Lurkmore:Шаблоны
Шаблоны в первом приближении являются автоматизированным копипастом. Однако они позволяют невозбранно достичь большего, чем позволяет копипаст. А ещё говорят, что они полны по Тьюрингу. Разработчикам ПО это может что-то напоминать.
Следует обратить внимание на то, что шаблоны могут не только копипастить текст, но и оказывать другое влияние на страницу, в частности, относить её к какой-либо категории.
Как луркать
Язык разметки, включая разметку шаблонов, описан на сайте MediaWiki.org. Там описаны различные версии медиавики и различные расширения. Наша версия 1.40.0 (берётся из магического слова, см. код страницы), а из полезных для разметки расширений имеются ParserFunctions и Cite. Так-то!
Кстати, понимаете ли вы по-английски?
Шаблоны же находятся непосредственно здесь, в пространстве имён «Шаблон». Участник, даже если он Анонимус, может невозбранно создать собственный или отредактировать имеющийся шаблон. Ну, кроме защищённых названий.
Как вставлять
Шаблоны вставляются двойными фигурными скобками. Вот такое {{TeX}} вставляет в текущую страницу содержимое страницы Шаблон:TeX, и получается вот так: ΤΕΧ. «Шаблон:» — пространство имён, в котором берутся шаблоны.
Можно вставлять и страницы из других пространств имён, добавив двоеточие в начало — {{: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}} | Участник |
Чтобы использовать имена страниц в ссылках, надо на конце добавлять ещё одно E, например, {{TALKPAGENAMEE}}.
- Дата и время
{{CURRENTYEAR}}, {{CURRENTMONTH}}, etc. Используются системные настройки. Если нужны ваши дата и время, заданные в настройках пользователя, то CURRENT заменяется на LOCAL.
- Форматирование
- {{lc:БуКаВкИ}} — букавки,
- {{uc:БуКаВкИ}} — БУКАВКИ.
- {{lcfirst:БуКаВкИ}} и
- {{ucfirst:БуКаВкИ}} изменяют только первую букву.
- Арифметика и логика
- {{#expr:выражение}} — умеет делать арифметические и логические действия, округлять, возводить в степень, находить логарифм, применять тригонометрические функции. Не умеет делить на ноль и находить арксинус четырёх. Операторы пишутся так же, как на калькуляторе или английском экселе. Очень нужная вещь.
- {{#if:текст|что выдать, если непусто|что выдать, если пусто}} — проверяет, пустой ли текст. Разумеется, с неизменной строкой не очень полезно, и туда как текст обычно запиливают параметры или магические слова. Например {{#if:{{NAMESPACE}}|Это хуита|Это основное пространство}} — например, используется в {{notcrap}}.
- {{#ifeq:что|чему|если равно|если не равно}} — проверяет равенство строк что и чему. Регистрозависимое, что позволяет юзать вместе со всякими lcfirst. Пример в {{Языки}}, {{Девайс}}.
- #switch
{{#switch: что | равно-чему1=выдать1 | равно-чему2 | равно-чему3=выдать3 |#default = выдать в остальных случаях}}
Сравнивает что с вариантами равно-чемуn и выдаёт соответствующий результат. В случаях, где нет знака равно, как здесь с равно-чему2, берётся следующий, то есть выдать3. равно-чемуn или выдатьn вполне может быть пустой строкой. Применяется дохуя где. Аналог if-then-else.
- {{#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.
Мнемоники
Чтобы не пихать всё время тег <nowiki>, особенно если нужно сослаться лишь на одиночный тег или символ без обработки или вставить юникод-символ, который с клавы сложно набрать, достаточно произвести замену спецсимвола на его аналог. Например:
Символ | Назначение | Мнемоника | Код |
---|---|---|---|
[ | левая квадратная скобка | [ | |
] | правая квадратная скобка | ] | |
< | левая угловая скобка, знак меньше | < | < |
> | правая угловая скобка, знак больше | > | > |
неразрывный пробел | |   | |
& | амперсанд | & | & |
« | левая угловая кавычка | « | « |
» | правая угловая кавычка | » | » |
' | одинарная кавычка | ' | ' |
" | двойная кавычка | " | " |
‘ | одиночная левая кавычка-лапка | ‘ | ‘ |
’ | одиночная правая кавычка-лапка | ’ | ’ |
“ | двойная левая кавычка-лапка | “ | “ |
” | двойная правая кавычка-лапка | ” | ” |
́ | аку́т, знак ударения | ́ | |
£ | фунт | £ | £ |
€ | евро | € | € |
¥ | иена | ¥ | ¥ |
ƒ | знак функции | ƒ | ƒ |
∀ | всё множество | ∀ | ∀ |
∃ | существует | ∃ | ∃ |
∅ | пустое множество | ∅ | ∅ |
∂ | частичный дифференциал | ∂ | ∂ |
∑ | сумма | ∑ | ∑ |
√ | квадратный корень или радикал | √ | √ |
∫ | интеграл | ∫ | ∫ |
∠ | угол | ∠ | ∠ |
∞ | бесконечность | ∞ | ∞ |
Æ | заглавная латинская лигатура | Æ | Æ |
æ | строчная латинская лигатура | æ | æ |
Мнемоники и коды взаимозаменяемы. Обратите внимание, что мнемоники игнорируют любое вики-форматирование. Больше луркать здесь.
Фичи
- Вложенность — да.
- Рекурсия — да.
Комментарии
В вике используются html'ные комментарии:
<!-- Здесь был Вася. -->
При создании своего премудрого шаблона обязательно надо писать, как он работает! Для юзеров есть шаблон {{doc}}, а для интересующихся есть комменты. Хорошие комменты растят карму, я гарантирую это!
Какие шаблоны есть
Плашки
Основная статья: ЛМ:плашки
Шаблоны-списки
Версия «см. также», обладающая большей функциональностью. Также её проще поддерживать — достаточно добавить ссылку в шаблон, а не искать все статьи, куда её нужно добавить. Алсо, навязывает категории, которые обычно лень проставлять. Словом, кошерная вещь. Полный список здесь.
Прочие полезности
- {{tp}} — кошерно сослаться на шаблон
- {{NSFW}} — скрывает NSFW-контент типа Гуро, Goatse, tubgirl. На самом деле NSFW чаще скрывает говно, на которое не стоит тратить время. Параметр title можно опустить. Используются также неименованные значения.
- {{NSFW|title=высер|content={{хуита}} …}} — здесь плашка сломается, первый символ после знака равенства не должен быть {. Вот так, например, обходится: {{NSFW|title=высер|content=<nowiki></nowiki> …}}
- [[Файл:Example.jpg|thumb|NSFW]] — скрывает изображение с шок-материалом, вместо него пишется надпись «not safe for work». Изображение становится видно, если на него один раз кликнуть.
- {{Spoiler}} — (спойлер: да, таки действительно спойлер).
- {{video}} — вставка видео с YouTube и не только.
- {{ET}} -
- {{note}} — вставка висящей справа свёрнутой заметки.
- {{Q}}, {{Цитата}} — цитирование. Первый параметр — цитата, второй — автор, автор по умолчанию Анонимус. Больше шаблонов здесь.
- {{Acronym}}, {{Укроним}} — тултип. Acronym для JAFA, Укроним для Інших мов. Первым полезно помечать отдельные слова, вторым — длинные куски текстов.
- {{ascii}} — для оформления ASCII-арта моноширинным шрифтом на чёрном фоне.
- {{Lj comm}}, {{Lj user}} — ссылки на ЖЖшку. Другие шаблоны для внешних ссылок здесь.
- {{lolwhat}}, {{prooflink}}, {{proofpic}} — выражает сомнение[ЩИТО?] в достоверности информации[пруфлинк?] в самом тексте. Другие варианты тут.
- {{doc}} — для описания к шаблонам. Идея в том, что doc к залоченному шаблону может редактировать даже анонимус.
- {{Main}} — ссылается на основную статью. Как здесь в #Плашки.
- {{Stub}} — для недописанных разделов статьи.
- Остальные.