Перейти к содержанию

Шаблон:Футбольная форма

Материал из Наро-Фоминский Футбол

Шаблон рисует футбольную форму из пяти частей: левый рукав, футболку, правый рукав, трусы и гетры. Параметры совпадают с шаблоном Википедии, поэтому готовые вызовы можно переносить без правок. Все параметры необязательны.

Требования

  • Расширения ParserFunctions и TemplateStyles; для визуального редактора — TemplateData.
  • Файлы масок и узоров. В Википедии они берутся с Wikimedia Commons, а на своей вики их нужно сделать доступными одним из двух способов:
    1. Подключить Commons: добавьте в LocalSettings.php строку $wgUseInstantCommons = true;. Серверу нужен выход в интернет к commons.wikimedia.org. После этого станут доступны все узоры из категории на Commons.
    2. Загрузить файлы на свою вики: скачайте их с Commons (ссылки в таблице ниже) и загрузите под теми же именами — через «Служебная:Загрузка» или командой php maintenance/run.php importImages папка --extensions=svg,png. Для масок в формате SVG нужны $wgFileExtensions[] = 'svg'; и отрисовка SVG: $wgSVGNativeRendering = true; (MediaWiki 1.41+) или $wgSVGConverter.
  • Если файлов нет, шаблон всё равно рисует форму: силуэт и контур даёт запасная маска на CSS (MediaWiki 1.40+). На месте недоступных узоров будет штриховка.

Проверка установки

Таблица показывает, видит ли эта вики файлы, нужные для масок и для примеров ниже.

Файл Для чего На этой вики
Kit left arm.svg маска левого рукава ✔ есть
Kit body.svg маска футболки ✔ есть
Kit right arm.svg маска правого рукава ✔ есть
Kit shorts.svg маска трусов ✔ есть
Kit socks long.svg маска гетр ✔ есть
Kit body whitehorizontal.png узор в примерах ✔ есть
Kit body blackstripes.png узор в примерах ✔ есть
Kit left arm whiteborder.png узор в примерах ✔ есть
Kit right arm whiteborder.png узор в примерах ✔ есть
Kit shorts whitesides.png узор в примерах ✔ есть
Kit socks whitetop.png узор в примерах ✔ есть
Kit socks blacktop.png узор в примерах ✔ есть

Как устроен

Шаблон разделён на четыре страницы, у каждой одна задача:

Страница Что в ней Что здесь менять
Шаблон:Футбольная форма публичные параметры, синонимы, значения по умолчанию, TemplateData добавить параметр или синоним
Шаблон:Футбольная форма/узоры список всех узоров
Шаблон:Футбольная форма/раскладка список частей и соглашение об именах файлов добавить часть, сменить имена файлов
Шаблон:Футбольная форма/часть одна часть: цвет + узор + маска, обработка ошибок изменить устройство слоёв
Шаблон:Футбольная форма/styles.css размеры, сетка, заглушка, подпись, темы внешний вид, новые темы

Каждая часть — блок с тремя слоями (снизу вверх):

  1. цвет — inline background-color блока;
  2. узор — картинка File:Kit <часть><узор>.<тип файлов>, прозрачная везде, кроме рисунка узора;
  3. маска — File:Kit <часть>.svg: прозрачна внутри силуэта, белая снаружи, с контуром. Если файла маски нет, её заменяет запасная маска на CSS (clip-path): похожий силуэт с контуром, но без мелких деталей оригинала.

Файлы ищутся по имени, без URL и путей, поэтому шаблон работает на любой вики, где есть эти файлы: загружены локально или доступны с Commons ($wgUseInstantCommons). Используются канонические пространства имён File:, Media: и Category: — они понятны вики на любом языке.

Параметры

Параметр Синоним Что задаёт По умолчанию Обязателен
leftarm л_рукав цвет левого рукава цвет футболки нет
body футболка цвет футболки белый рекомендуется
rightarm п_рукав цвет правого рукава цвет футболки нет
shorts трусы цвет трусов; нет — без трусов и гетр белый рекомендуется
socks гетры цвет гетр; нет — без гетр белый рекомендуется
pattern_la узор_л_рукав узор левого рукава — нет
pattern_b узор_футболка узор футболки — нет
pattern_ra узор_п_рукав узор правого рукава — нет
pattern_sh узор_трусы узор трусов — нет
pattern_so узор_гетры узор гетр — нет
filetype тип_файлов расширение файлов узоров: png или svg png нет
title название подпись под рисунком (можно с вики-ссылками) — рекомендуется
alt — текст для программ экранного доступа (обычный текст) «Форма» рекомендуется
theme тема тема оформления: inline, gallery, card или своя — нет
styles стили дополнительная страница TemplateStyles — нет
check проверка нет — не проверять наличие файлов узоров проверять нет
  • Цвет — шестнадцатеричный RGB без «#»: ee0000 или f00. Подойдут и #ee0000, и имена CSS (red, navy).
  • Узор — суффикс имени файла, обычно с «_» в начале: _whitehorizontal → File:Kit body_whitehorizontal.png (в названиях файлов «_» и пробел равнозначны). Готовые узоры — в категории на Commons.
  • Значение «нет» (а также no, none, регистр не важен): shorts=нет убирает трусы и гетры, socks=нет — только гетры.

Примеры

1. Простая форма: только цвета

Рукава не заданы, поэтому берут цвет футболки.

Код Результат
{{Футбольная форма
|body   = 87ceeb
|shorts = 000000
|socks  = 000000
|alt    = Голубая футболка, чёрные трусы и гетры
|title  = 1938—1941
}}
1938—1941

2. Форма с узорами

Код Результат
{{Футбольная форма
|pattern_b  = _whitehorizontal
|pattern_so = _whitetop
|leftarm    = ee0000
|body       = ee0000
|rightarm   = ee0000
|shorts     = ffffff
|socks      = ee0000
|alt        = Красно-белая футбольная форма
|title      = Основная форма [[Спартак (футбольный клуб, Москва)|Спартак (Москва)]]
}}
Основная форма Спартак (Москва)
{{Футбольная форма
|pattern_b = _blackstripes
|leftarm   = ff8c00
|body      = ff8c00
|rightarm  = ff8c00
|shorts    = 000000
|socks     = ff8c00
|alt       = Оранжево-чёрная футбольная форма
|title     = Основная форма [[Шахтёр (футбольный клуб, Донецк)|Шахтёр (Донецк)]]
}}
Основная форма Шахтёр (Донецк)

3. Без трусов или без гетр

Код Результат
{{Футбольная форма
|body   = 000000
|shorts = нет
|alt    = Чёрная футболка
|title  = shorts = нет
}}
shorts = нет
{{Футбольная форма
|body   = 008000
|shorts = ffffff
|socks  = нет
|alt    = Зелёная футболка и белые трусы
|title  = socks = нет
}}
socks = нет

4. Узоры на всех частях

Код Результат
{{Футбольная форма
|pattern_la = _whiteborder
|pattern_b  = _whitehorizontal
|pattern_ra = _whiteborder
|pattern_sh = _whitesides
|pattern_so = _whitetop
|leftarm    = ee0000
|body       = ee0000
|rightarm   = ee0000
|shorts     = ee0000
|socks      = ee0000
|alt        = Красная форма с белой полосой на груди и белой отделкой
|title      = Узоры на всех частях
}}
Узоры на всех частях

5. Темы: несколько форм в ряд

тема=inline ставит формы в строку, тема=gallery — плитками одинаковой ширины, тема=card — на карточке с рамкой.

{{Футбольная форма|тема=gallery|body=87ceeb|shorts=000000|socks=000000|title=1938—1941}}
{{Футбольная форма|тема=gallery|body=000080|shorts=000000|socks=000080|title=1941—1946}}
{{Футбольная форма|тема=gallery|body=008000|shorts=000000|socks=008000|pattern_so=_blacktop|title=1947—1948}}
{{Футбольная форма|тема=gallery|body=ffffff|shorts=ffffff|socks=ffffff|title=1955, 1957—1977}}

Обработка ошибок

Если на вики нет файла маски (обычно это значит, что не подключён Commons), запасная маска на CSS рисует силуэт с контуром — вместо формы не будут видны цветные прямоугольники. Проверить, какие файлы доступны, можно в таблице «Проверка установки».

Предположим, узор задан, а файла с таким именем нет (|pattern_b = _опечатка). Тогда:

  • рисунок не ломается: MediaWiki выводит вместо картинки красную ссылку, а стили превращают её в штриховку-заглушку поверх основного цвета. Чтобы вместо штриховки был просто основной цвет, поменяйте одно правило в styles.css;
  • в предпросмотре под рисунком появляется красное предупреждение с именем файла и параметра;
  • статья попадает в Category:Страницы с отсутствующими узорами футбольной формы, а также в стандартную категорию MediaWiki о неработающих файловых ссылках.

Проверка идёт через #ifexist по Media: — это находит и файлы с Commons. Но это «дорогая» функция: на страницу её можно вызвать ограниченное число раз ($wgExpensiveParserFunctionLimit: 100 по умолчанию, 500 в Википедии), и каждая форма тратит по одному вызову на каждый заданный узор. На страницах с десятками форм ставьте |проверка=нет. Рисунок от проверки не зависит: даже при исчерпанном лимите формы рисуются правильно. Ненадёжной становится только диагностика — после лимита #ifexist считает любой файл отсутствующим, и в категорию попадают ложные срабатывания. Сама MediaWiki при этом добавляет страницу в служебную категорию о превышении лимита.

Как дорабатывать

Новая часть формы (например, воротник поверх футболки)
1) в Шаблон:Футбольная форма/раскладка скопируйте вызов {{Футбольная форма/часть}} и задайте part, mask, pattern;
2) в styles.css добавьте имя части в grid-template-areas и правило .fkit-part--<имя> с размерами;
3) здесь добавьте параметры и их описание в TemplateData.
Новая тема
Добавьте в styles.css блок .fkit--<имя> { … } и вызывайте шаблон с |тема=<имя>. Тему можно держать и на отдельной странице: |стили=Футбольная форма/ретро.css.
Другие имена файлов
Соглашение об именах задано только в Шаблон:Футбольная форма/раскладка: Kit <часть>.svg для масок и Kit <часть><узор>.<тип> для узоров.
Свой тип файлов для одной части
В раскладке замените у нужной части {{{filetype|png}}} на отдельный параметр и пропишите его здесь.
Другой размер формы
Все размеры заданы в styles.css (колонки сетки и высоты частей), картинки растягиваются под них сами.

Ограничения

  • Динамический background-image: url(…) в MediaWiki невозможен: санитайзер удаляет inline-стиль с url( целиком, а в TemplateStyles адреса статичны и ограничены списком $wgTemplateStylesAllowedUrls. Поэтому узоры — это слои-картинки [[File:…]], как и в Википедии.
  • Маски белые вне силуэта, поэтому рисунок должен лежать на белом фоне. В тёмной теме стили кладут под него белую подложку.
  • Параметр alt — обычный текст без вики-разметки. Кавычки «…» и "…" можно, а апостроф ' обрезает текст: значение стоит в атрибуте в одинарных кавычках.
  • Запасная маска на CSS и штриховка работают в MediaWiki 1.40+ (там у отсутствующего файла есть обёртка typeof="mw:Error"). В более старых версиях без файлов части останутся цветными прямоугольниками.
  • Нужны расширения ParserFunctions и TemplateStyles; проверено на MediaWiki 1.43 LTS.

TemplateData

Рисует футбольную форму из пяти частей: левый рукав, футболку, правый рукав, трусы и гетры. Каждая часть — основной цвет, необязательный узор (картинка «Kit <часть><узор>.<тип файлов>») и маска-контур. Все параметры необязательны.

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

Шаблон использует собственное форматирование параметров.

ПараметрОписаниеТипСтатус
Узор левого рукаваpattern_la узор_л_рукав

Суффикс имени файла узора, обычно начинается с «_». Файл: «Kit left arm» + узор + «.» + тип файлов, например _whiteborder → File:Kit left arm_whiteborder.png.

Предлагаемые значения
_whiteborder _whiteshoulders
Пример
_whiteborder
Однострочныйнеобязательный
Узор футболкиpattern_b узор_футболка

Суффикс имени файла узора, обычно начинается с «_». Файл: «Kit body» + узор + «.» + тип файлов, например _whitehorizontal → File:Kit body_whitehorizontal.png.

Предлагаемые значения
_whitehorizontal _blackstripes
Пример
_whitehorizontal
Однострочныйнеобязательный
Узор правого рукаваpattern_ra узор_п_рукав

Суффикс имени файла узора, обычно начинается с «_». Файл: «Kit right arm» + узор + «.» + тип файлов.

Предлагаемые значения
_whiteborder _whiteshoulders
Пример
_whiteborder
Однострочныйнеобязательный
Узор трусовpattern_sh узор_трусы

Суффикс имени файла узора, обычно начинается с «_». Файл: «Kit shorts» + узор + «.» + тип файлов.

Предлагаемые значения
_whitesides
Пример
_whitesides
Однострочныйнеобязательный
Узор гетрpattern_so узор_гетры

Суффикс имени файла узора, обычно начинается с «_». Файл: «Kit socks» + узор + «.» + тип файлов.

Предлагаемые значения
_whitetop _blacktop
Пример
_whitetop
Однострочныйнеобязательный
Цвет левого рукаваleftarm л_рукав

Шестнадцатеричный RGB без «#» (ee0000 или f00); подойдут и #ee0000, и имя цвета CSS. Если не задан — цвет футболки.

По умолчанию
цвет футболки
Пример
ee0000
Однострочныйнеобязательный
Цвет футболкиbody футболка

Шестнадцатеричный RGB без «#» (ee0000 или f00); подойдут и #ee0000, и имя цвета CSS.

По умолчанию
белый
Пример
ee0000
Однострочныйпредложенный
Цвет правого рукаваrightarm п_рукав

Шестнадцатеричный RGB без «#» (ee0000 или f00); подойдут и #ee0000, и имя цвета CSS. Если не задан — цвет футболки.

По умолчанию
цвет футболки
Пример
ee0000
Однострочныйнеобязательный
Цвет трусовshorts трусы

Шестнадцатеричный RGB без «#». Значение «нет» отключает трусы и гетры.

Предлагаемые значения
нет
По умолчанию
белый
Пример
ffffff
Однострочныйпредложенный
Цвет гетрsocks гетры

Шестнадцатеричный RGB без «#». Значение «нет» отключает гетры.

Предлагаемые значения
нет
По умолчанию
белый
Пример
ee0000
Однострочныйпредложенный
Подписьtitle название

Подпись под рисунком; можно с вики-ссылками. Если не задана, подписи нет.

Пример
Основная форма [[Спартак (футбольный клуб, Москва)|Спартак (Москва)]]
Содержимое (контент)предложенный
Альтернативный текстalt

Описание рисунка для программ экранного доступа: обычный текст без вики-разметки и без апострофа ('). Пустое значение заменяется на «Форма».

По умолчанию
Форма
Пример
Красно-белая футбольная форма
Однострочныйпредложенный
Тип файлов узоровfiletype тип_файлов

Расширение файлов узоров, действует на все узоры формы.

Предлагаемые значения
png svg
По умолчанию
png
Однострочныйнеобязательный
Тема оформленияtheme тема

Модификатор из styles.css: inline — формы в ряд, gallery — плитки одинаковой ширины, card — карточка с рамкой. Своя тема — новый класс .fkit--<имя> в стилях.

Предлагаемые значения
inline gallery card
Однострочныйнеобязательный
Дополнительные стилиstyles стили

Страница TemplateStyles со своей темой; подключается после основной. Без префикса пространства имён ищется в «Шаблон:».

Пример
Футбольная форма/ретро.css
Имя страницынеобязательный
Проверять файлы узоровcheck проверка

Проверка наличия файлов узоров через #ifexist: дорогая функция с лимитом вызовов на страницу. «нет» или 0 отключает проверку — нужно на страницах с десятками форм. На рисунок не влияет.

По умолчанию
1
Логическое значениенеобязательный