Шаблон:Футбольная форма
Шаблон рисует футбольную форму из пяти частей: левый рукав, футболку, правый рукав, трусы и гетры. Параметры совпадают с шаблоном Википедии, поэтому готовые вызовы можно переносить без правок. Все параметры необязательны.
Требования
- Расширения ParserFunctions и TemplateStyles; для визуального редактора — TemplateData.
- Файлы масок и узоров. В Википедии они берутся с Wikimedia Commons, а на своей вики их нужно сделать доступными одним из двух способов:
- Подключить Commons: добавьте в
LocalSettings.phpстроку$wgUseInstantCommons = true;. Серверу нужен выход в интернет к commons.wikimedia.org. После этого станут доступны все узоры из категории на Commons. - Загрузить файлы на свою вики: скачайте их с Commons (ссылки в таблице ниже) и загрузите под теми же именами — через «Служебная:Загрузка» или командой
php maintenance/run.php importImages папка --extensions=svg,png. Для масок в формате SVG нужны$wgFileExtensions[] = 'svg';и отрисовка SVG:$wgSVGNativeRendering = true;(MediaWiki 1.41+) или$wgSVGConverter.
- Подключить Commons: добавьте в
- Если файлов нет, шаблон всё равно рисует форму: силуэт и контур даёт запасная маска на 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 | размеры, сетка, заглушка, подпись, темы | внешний вид, новые темы |
Каждая часть — блок с тремя слоями (снизу вверх):
- цвет — inline
background-colorблока; - узор — картинка
File:Kit <часть><узор>.<тип файлов>, прозрачная везде, кроме рисунка узора; - маска —
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.
| Однострочный | необязательный |
| Узор футболки | pattern_b узор_футболка | Суффикс имени файла узора, обычно начинается с «_». Файл: «Kit body» + узор + «.» + тип файлов, например _whitehorizontal → File:Kit body_whitehorizontal.png.
| Однострочный | необязательный |
| Узор правого рукава | pattern_ra узор_п_рукав | Суффикс имени файла узора, обычно начинается с «_». Файл: «Kit right arm» + узор + «.» + тип файлов.
| Однострочный | необязательный |
| Узор трусов | pattern_sh узор_трусы | Суффикс имени файла узора, обычно начинается с «_». Файл: «Kit shorts» + узор + «.» + тип файлов.
| Однострочный | необязательный |
| Узор гетр | pattern_so узор_гетры | Суффикс имени файла узора, обычно начинается с «_». Файл: «Kit socks» + узор + «.» + тип файлов.
| Однострочный | необязательный |
| Цвет левого рукава | leftarm л_рукав | Шестнадцатеричный RGB без «#» (ee0000 или f00); подойдут и #ee0000, и имя цвета CSS. Если не задан — цвет футболки.
| Однострочный | необязательный |
| Цвет футболки | body футболка | Шестнадцатеричный RGB без «#» (ee0000 или f00); подойдут и #ee0000, и имя цвета CSS.
| Однострочный | предложенный |
| Цвет правого рукава | rightarm п_рукав | Шестнадцатеричный RGB без «#» (ee0000 или f00); подойдут и #ee0000, и имя цвета CSS. Если не задан — цвет футболки.
| Однострочный | необязательный |
| Цвет трусов | shorts трусы | Шестнадцатеричный RGB без «#». Значение «нет» отключает трусы и гетры.
| Однострочный | предложенный |
| Цвет гетр | socks гетры | Шестнадцатеричный RGB без «#». Значение «нет» отключает гетры.
| Однострочный | предложенный |
| Подпись | title название | Подпись под рисунком; можно с вики-ссылками. Если не задана, подписи нет.
| Содержимое (контент) | предложенный |
| Альтернативный текст | alt | Описание рисунка для программ экранного доступа: обычный текст без вики-разметки и без апострофа ('). Пустое значение заменяется на «Форма».
| Однострочный | предложенный |
| Тип файлов узоров | filetype тип_файлов | Расширение файлов узоров, действует на все узоры формы.
| Однострочный | необязательный |
| Тема оформления | theme тема | Модификатор из styles.css: inline — формы в ряд, gallery — плитки одинаковой ширины, card — карточка с рамкой. Своя тема — новый класс .fkit--<имя> в стилях.
| Однострочный | необязательный |
| Дополнительные стили | styles стили | Страница TemplateStyles со своей темой; подключается после основной. Без префикса пространства имён ищется в «Шаблон:».
| Имя страницы | необязательный |
| Проверять файлы узоров | check проверка | Проверка наличия файлов узоров через #ifexist: дорогая функция с лимитом вызовов на страницу. «нет» или 0 отключает проверку — нужно на страницах с десятками форм. На рисунок не влияет.
| Логическое значение | необязательный |